当前位置: 首页 > news >正文

SpringCloud | Dubbo 微服务实战——注册中心详解

前言

在这里插入图片描述
「作者主页」:雪碧有白泡泡
「个人网站」:雪碧的个人网站
请添加图片描述

|Eureka,Nacos,Consul,Zookeeper在Spring Cloud和Dubbo中实战

请添加图片描述

引言

在项目开发过程中,随着项目不断扩大,也就是业务的不断增多,我们将采用集群,微服务的形式去降低配置,集群是指将一个项目部署到多个服务器当中,而微服务是指将业务拆分为一个一个服务去进行,那么我们想要去实现一个业务的时候,我们就需要调用多个服务,那么每个服务的调用,我们都需要知道它的URL,若是有成千上万的URL该如何维护呢?
这时就需要注册中心功能
其实我们可以把注册中心类比与通讯录

设计思路

程序是数据结构和算法的组合,那么我们若是想要设计一个注册中心,我们就要从两个方面去考虑

  • 存储结构
  • 提供的操作

存储结构

我们类比一下通讯录,通讯录的每一个内容都包括姓名和电话,那么注册中心每一个保存的是服务名和服务信息,这个结构我们不难想象到map结构
则注册表的存储结构如下:
在这里插入图片描述

两层map结构: 在微服务系统中,为了避免单点故障,通常使用的是服务集群,一个服务名会对应多个服务实例

注册中心的操作

  • 接收服务
  • 接收服务心跳
  • 接收服务下线
  • 服务剔除
  • 查询注册表中服务信息
  • 注册中心集群中的信息同步

注册中心的使用

注册中心的使用主要分为两步

  1. 搭建注册中心服务端
  2. 启动业务服务,让服务和注册中心连通
    在这里插入图片描述

本文的核心内容就是具体的注册中心配置使用

Dubbo和Zookeeper的使用

Zookeeper

  1. zookeeper的安装
    安装地址
    在这里插入图片描述

  2. 将conf目录下的zoo_sample.cfg文件,复制一份,重命名为zoo.cfg
    在这里插入图片描述

  3. 在步骤2的基础上,修改zoo.cfg配置文件中zookeeper的数据文件存储位置及添加zookeeper日志文件位置(方法查错),(数据日志配置需另加),具体步骤如下

  • 在zookeeper目录下新建tmp文件夹,在分别tmp文件夹下面新建data文件夹与log文件夹,用于存放data(数据存储)和log(数据日志)
  • 修改conf下zoo.cfg配置中数据存储和数据日志路径
dataDir=../tmp/data
dataLogDir=../tmp/log
# 添加此配置项
admin.serverPort=8888

zoo.cfg配置文件参数说明

# tickTime       客户端与服务器或者服务器与服务器之间维持心跳,也就是每个tickTime时间就会发送一次心跳。通过心跳不仅能够用来监听机器的工作状态,还可以通过心跳来控制FlowerLeader的通信时间# initLimit	       集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数#syncLimit         集群中flower服务器(F)跟leader(L)服务器之间的请求和答应最多能容忍的心跳数# dataDir          用来存放myid信息跟一些版本,日志,跟服务器唯一的ID信息等。# dataLogDir       存放事务日志的文件夹# clientPort       客户端连接的接口,客户端连接zookeeper服务器的端口,zookeeper会监听这个端口,接收客户端的请求访问!这个端口默认是2181。# maxClientCnxns    允许连接的客户端数目,0为不限制,通过IP来区分不同的客户端
  1. 判断zookeeper安装十分成功
    bin目录
  • zkCli.cmd 验证是否安装成功
  • zkServer.cmd 启动zookeeper服务
  1. 可以通过连接工具判断是否连接成功
    在这里插入图片描述

下载地址——prettyzoo
在这里插入图片描述

dubbo-admin

  1. dubbo-admin下载
    安装地址

后端启动打包

  1. 踩坑经过:一定要确定运行环境是jdk1.8
    在这里插入图片描述
    成功启动并打包
    在这里插入图片描述

前端启动打包

  1. 首先找到前端文件夹ui
    执行命令
npm install

打包即可,注意要检查是否完成node.js的安装

Eureka的使用

搭建eureka-server步骤

1.引入SpringCloud为eureka提供的starter依赖:

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

2. 编写一个application.yml文件,内容如下:

server:port: 10086
spring:application:name: eureka-server
eureka:client:service-url: defaultZone: http://127.0.0.1:10086/eureka

3. @EnableEurekaServer注解

@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication {public static void main(String[] args) {SpringApplication.run(EurekaApplication.class, args);}
}

4.启动微服务,然后在浏览器访问:http://127.0.0.1:10086

Nacos的使用

1. 下载安装

下载地址——Nacos下载

Nacos安装:

在这里插入图片描述

  • 解压安装包

  • 打开配置文件(nacos安装目录 -> conf -> application.properties)

spring.datasource.platform=mysqldb.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTCdb.user=root
db.password=123456
  • 修改端口号
\### Default web context path:
server.servlet.contextPath=/nacos
\### Default web server port:
server.port=8848
  1. 执行sql文件(nacos安装目录 -> conf ->nacos-mysql.sql)

  2. 通过修改nacos.core.auth.enabled为true,就可以开启nacos认证。开启后客户端必须配置username、password。

单机模式启动

在nacs安装目录下的bin目录中运行命令,默认是集群模式启动,单机模式启动需要指定模式。

Windows命令:startup.cmd -m standalone

Linux命令:sh startup.sh -m standalone

命令运行成功后直接访问:http://localhost:8848/nacos
默认账号密码都是:nacos

Consul的使用

在这里插入图片描述

下载与安装

下载地址——Consul

1)下载

wget https://releases.hashicorp.com/consul/1.3.0/consul_1.3.0_linux_amd64.zip

2)解压

unzip  consul_1.3.0_linux_amd64.zip

3)拷贝到usr目录下

mv consul   /usr

4)查看是否安装成功

./consul

小结

本文内容主要在单机模式下下载安装注册中心,更详细的内容我推荐在下面这本书中去获取

京东链接:购买地址

  • 🎁本次送书1~3本【取决于阅读量,阅读量越多,送的越多】👈
  • ⌛️活动时间:截止到2023-12月9号
  • ✳️参与方式:关注博主+三连(点赞、收藏、评论)
    在这里插入图片描述

内容简介

《Spring Cloud 微服务快速上手》介绍了当下*主流的属于Spring生态的微服务框架,它继承了Spring Boot的优点,开发部署都非常简单。本书内容全面,介绍了微服务架构的发展历程,包含Spring Cloud Netflix 和 Spring Cloud Alibaba的组件,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等。在解读核心组件的实现原理的同时,配以案例进行实践。本书内容包含微服务架构和云原生架构,读者在掌握微服务之后,可以进一步掌握云原生知识。
在这里插入图片描述
在这里插入图片描述

相关文章:

  • 48.0/图片和多媒体文件的使用(详细版)
  • 2023年【G1工业锅炉司炉】考试及G1工业锅炉司炉作业考试题库
  • docker-ubuntu中基于keepalived+niginx模拟主从热备完整过程
  • k8s的Pod常见的几种调度形式
  • LeetCode56. Merge Intervals
  • 【办公软件】Outlook启动一直显示“正在启动”的解决方法
  • JVM 运行时参数
  • 科技提升安全,基于YOLOv4开发构建商超扶梯场景下行人安全行为姿态检测识别系统
  • docker基本管理和概念
  • XML映射文件(第二种方式执行SQL语句)
  • AI PC行业深度研究报告:AI PC革新端侧AI交互体验
  • AVP对纵向控制ESP(Ibooster)的需求规范
  • spark sql基于RBO的优化
  • qt有哪些常用控件
  • SVN优缺点详解及版本控制系统选型建议
  • $translatePartialLoader加载失败及解决方式
  • 【comparator, comparable】小总结
  • Akka系列(七):Actor持久化之Akka persistence
  • Druid 在有赞的实践
  • ES6 学习笔记(一)let,const和解构赋值
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • Javascript弹出层-初探
  • Java方法详解
  • JSDuck 与 AngularJS 融合技巧
  • Laravel核心解读--Facades
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • XML已死 ?
  • 服务器从安装到部署全过程(二)
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 七牛云假注销小指南
  • 实现菜单下拉伸展折叠效果demo
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 新手搭建网站的主要流程
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • UI设计初学者应该如何入门?
  • 函数计算新功能-----支持C#函数
  • 容器镜像
  • ​2020 年大前端技术趋势解读
  • ​Linux·i2c驱动架构​
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (Note)C++中的继承方式
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (五)关系数据库标准语言SQL
  • (循环依赖问题)学习spring的第九天
  • (译)计算距离、方位和更多经纬度之间的点
  • .NET delegate 委托 、 Event 事件,接口回调
  • .NET HttpWebRequest、WebClient、HttpClient
  • .Net Memory Profiler的使用举例
  • .net 生成二级域名
  • .NET/C# 使用 SpanT 为字符串处理提升性能