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

2024-06-04 4515阅读

前言

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

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家:https://www.captainbed.cn/z

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

chatgpt体验地址

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

引言

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

这时就需要注册中心功能

其实我们可以把注册中心类比与通讯录

设计思路

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

  • 存储结构
  • 提供的操作

    存储结构

    我们类比一下通讯录,通讯录的每一个内容都包括姓名和电话,那么注册中心每一个保存的是服务名和服务信息,这个结构我们不难想象到map结构

    则注册表的存储结构如下:

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

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

    注册中心的操作

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

      注册中心的使用

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

      1. 搭建注册中心服务端
      2. 启动业务服务,让服务和注册中心连通

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

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

      Dubbo和Zookeeper的使用

      Zookeeper

      1. zookeeper的安装

        安装地址

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

      2. 将conf目录下的zoo_sample.cfg文件,复制一份,重命名为zoo.cfg

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

      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时间就会发送一次心跳。通过心跳不仅能够用来监听机器的工作状态,还可以通过心跳来控制Flower跟Leader的通信时间
         
        # 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. 可以通过连接工具判断是否连接成功

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

          下载地址——prettyzoo

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

          dubbo-admin

          1. dubbo-admin下载

            安装地址

          后端启动打包

          1. 踩坑经过:一定要确定运行环境是jdk1.8

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

            成功启动并打包

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

          前端启动打包

          1. 首先找到前端文件夹ui

            执行命令

          npm install
          

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

          Eureka的使用

          搭建eureka-server步骤

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

              org.springframework.cloud
              spring-cloud-starter-netflix-eureka-server
          
          

          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安装:

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

          • 解压安装包

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

            spring.datasource.platform=mysql
            db.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=UTC
            db.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的使用

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

              下载与安装

              下载地址——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号
              • ✳️参与方式:关注博主+三连(点赞、收藏、评论)

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

                内容简介

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

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

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


    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]