微服务系列微服务注册与发现

Posted Poineer丶C

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微服务系列微服务注册与发现相关的知识,希望对你有一定的参考价值。

分布式系统是一组计算机,通过网络相互连接传递消息与通信后并协调它们的行为而形成的系统。组件之间彼此进行交互以实现一个共同的目标。

维基百科
Spring Cloud为开发人员提供了快速构建分布式系统中一些的工具。包括配置管理、服务注册与发现、断路器、智能路由、负载均衡、微代理、事件总线、全局锁、决策竞选、分布式会话等等。
上一篇中我已经把单体的天气预报系统拆分为四个微服务系统,为了实现各个微服务之间的调用,本篇我将使用Spring Cloud Eureka工具实现微服务的注册与发现。
一、Spring Cloud 与 Spring Boot的关系
a.Spring Boot是构建Spring Cloud架构的基石,前者专注于快速、方便集成单个个体,可以离开后者单独使用开发项目;后者是关注全局的服务治理框架,离不开前者,属于强依赖的关系。
(图片来源于:https://spring.io/)

b.Spring Cloud版本命名规则为伦敦地铁站的名字,与Spring Boot版本的对应关系。
微服务系列(四)微服务注册与发现
二、服务注册与发现的意义
如果把上篇拆分好的四个微服务系统分别部署在四台机器上,首当其冲的就是各个子系统之间的通信问题,子系统不在同一个环境,那就需要远程调用。远程调用可能会想到用HttpClien、WebService等技术来实现。既然要使用远程调用,就必须要知道URI地址。
大家在访问各个网站时,都是通过域名来访问。例如访问百度搜索服务时,我们会在地址栏输入(www.baidu.com),通过互联网服务DNS域名系统将地址栏中的域名解析并映射到对应的URI(如:http://10.23.22.234/baidu/search/),然后通过URI获取相应的服务。假如只能通过输入URI来访问服务,首先IP地址需要绑定主机,还有可能是动态变化的,而且URI又长又难记,那么对大家来说一定是噩梦,“百度一下”都变成了一件很难的事情,何况还有记住很多的URI地址。

所以这时候就需要引入服务注册与发现工具 ,通过服务名称找到服务,名称和服务实例是一对多的关系,即使一个实例挂掉,通过负载均衡,依然可以正常使用系统。

三、引入Eureka

Eureka 是一个基于 REST 的服务,主要在 AWS 云中使用, 定位服务来进行中间层服务器的负载均衡和故障转移。

维基百科
那么Eureka是如何解决天气预报系统各个微服务注册与发现问题的呢?首先创建一个天气系统服务(服务E),将城市数据API微服务(服务A)、天气数据采集微服务(服务B)、天气数据API微服务(服务C)、天气预报微服务(服务D)注册到天气系统服务上,在天气系统服务上维护这些已经注册的信息。此时E是Eureka的服务端,而A、B、C、D既是Eureka的客户端又是天气微服务。A、B、C、D四个服务都可以拿到Eureka(服务E)的注册清单。A、B、C、D四个服务互相调用不再通过具体的IP地址,而是通过服务名称来调用。
微服务系列(四)微服务注册与发现


四、Eureka服务端与客户端对比实现
1.修改build.gradle配置。
    a.服务端
微服务系列(四)微服务注册与发现
    b.客户端
微服务系列(四)微服务注册与发现
2.项目启动文件(Application.java)添加注释。
    a.服务端
微服务系列(四)微服务注册与发现
    b.客户端
微服务系列(四)微服务注册与发现
3.application.properties添加配置
    a.服务端
微服务系列(四)微服务注册与发现
    b.客户端
微服务系列(四)微服务注册与发现
4. Eureka-server页面
    a.无服务实例注册
微服务系列(四)微服务注册与发现
    b. 微服务实例同时注册


(脑子有点不够用了,看外网文档和开源项目开始怀疑人生)

以上是关于微服务系列微服务注册与发现的主要内容,如果未能解决你的问题,请参考以下文章

《微服务系列:Eureka服务注册发现中心》

Dubbo 微服务系列(03)服务注册

微服务系列之ZooKeeper注册中心和Nacos注册中心

微服务系列Consul的介绍与安装

重学SpringCloud系列二之服务注册与发现---上

SpringCloud系列微服务与分布式核心知识