`
hbhk888918
  • 浏览: 3397 次
社区版块
存档分类
最新评论

微服务之服务注册和服务发现

阅读更多

 目录

一、微服务设计
二、技术选型
三、关键实现
四、服务注册
五、服务发现

 

目标

一、微服务包括那些内容

 

二、为什么会出现服务注册和服务发现

 

 

三、了解关键技术实现原理

 

 

一、微服务设计

1、包括那些内容

(1)、服务注册、发现、负载均衡和健康检查,假定采用进程内LB方案,那么服务自注册一般统一做在服务器端框架中,健康检查逻辑由具体业务服务定制,框架层提供调用健康检查逻辑的机制,服务发现和负载均衡则集成在服务客户端框架中。

(2)、监控日志,框架一方面要记录重要的框架层日志、metrics和调用链数据,还要将日志、metrics等接口暴露出来,让业务层能根据需要记录业务日志数据。在运行环境中,所有日志数据一般集中落地到企业后台日志系统,做进一步分析和处理。

(3)、 REST/RPC和序列化,框架层要支持将业务逻辑以HTTP/REST或者RPC方式暴露出来,HTTP/REST是当前主流API暴露方式,在性能要求高的场合则可采用Binary/RPC方式。针对当前多样化的设备类型(浏览器、普通PC、无线设备等),框架层要支持可定制的序列化机制,例如,对浏览器,框架支持输出Ajax友好的JSON消息格式,而对无线设备上的Native App,框架支持输出性能高的Binary消息格式。

(4)、配置,除了支持普通配置文件方式的配置,框架层还可集成动态运行时配置,能够在运行时针对不同环境动态调整服务的参数和配置。

(5)、限流和容错,框架集成限流容错组件,能够在运行时自动限流和容错,保护服务,如果进一步和动态配置相结合,还可以实现动态限流和熔断。

 

(6)、管理接口,框架集成管理接口,一方面可以在线查看框架和服务内部状态,同时还可以动态调整内部状态,对调试、监控和管理能提供快速反馈。Spring Boot微框架的Actuator模块就是一个强大的管理接口。

(7)、统一错误处理,对于框架层和服务的内部异常,如果框架层能够统一处理并记录日志,对服务监控和快速问题定位有很大帮助。

(8)、安全,安全和访问控制逻辑可以在框架层统一进行封装,可做成插件形式,具体业务服务根据需要加载相关安全插件。

 

 

 

(9)、文档自动生成,文档的书写和同步一直是一个痛点,框架层如果能支持文档的自动生成和同步,会给使用API的开发和测试人员带来极大便利。Swagger是一种流行Restful API的文档方案。

2、服务注册和服务发现

   1)、为什么会出现服务注册和服务发现

 

       在一个微服务应用中,服务实例在运行时的配置也会动态变化,包括他们的网络地址。为了满足客户端向服务发送请求的需要,必须要实现服务发现机制。服务发现的关键部分是服务注册表。服务注册表是一个可用的服务实例的数据库。服务注册表提供了一个管理API和一个查询API。服务实例的注册和注销通过管理API实现,查询API用来寻找可用的服务实例。

3、注册中心 

 

   服务注册中心。作为微服务架构最基础也是最重要的组件之一,服务注册中心本质上是为了解耦服务提供者和服务消费者。对于任何一个微服务,原则上都应存在或者支持多个提供者,这是由微服务的分布式属性决定的。更进一步,为了支持弹性扩缩容特性,一个微服务的提供者的数量和分布往往是动态变化的,也是无法预先确定的。因此,原本在单体应用阶段常用的静态LB机制就不再适用了,需要引入额外的组件来管微服务提供者的注册与发现,而这个组件就是服务注册中心。

 



 

 



 

 

二、技术选型

1、基础框架

     spring-4.2.8.RELEASE

2、rpc

     netty-4.0.24.Final

     序列化:protostuff-1.0.8

3、rest

     spring-mvc-4.2.8.RELEASE

4、服务注册和发现

     zookeeper-3.4.8

5、负载均衡

     轮询和加权算法

6、api网关

 

      camel-2.16.2

三、关键实现

1、服务规范

      (1)、服务开发规范

                  服务接口、服务实现、服务版本

      (2)、服务注册规范

                  服务扫描、服务注册格式

      (3)、服务发现规范

                  发现策略、接口代理、调用规范

2、服务实现

      (1)、生成服务

      (2)、服务使用

3、技术整合

 

     (1)、整合spring

 

4、技术实现

    (1)、统一对象代理(jdk动态对象)

    (2)、统一调用处理   (jdk动态处理)

    (3)、统一请求和返回封装

    (4)、反射调用(方法、参数)()

    (5)、订阅思想(zk)

    (6)、netty连接通道和监听

 

    (7)、java自定义注解

 

1、注册格式

     (2)、hms

   

 

 

       

 

 

 2、服务注册-消费者(consumer)到注册中心(register)

      (1)、扫描服务(自定义注解+spring注解扫描支持+spring注册bean)

      (2)、获取服务信息和服务bean管理

 

      (3)、注册服务信息到zk(节点+接口)

 3、服务发现-生存者(provider)获取注册中心服务信息(register)

      (1)、扫描服务(自定义注解+spring注解扫描支持)

      (2)、获取服务节点信息到本地

      (3)、spring 工厂模式创建rpc bean

 

      (4)、注册rpc bean 到 spring 管理

 

六、微服务开发

 1、整合spring,bean管理、bean使用跟spring 普通bean一致 

 

      未来预告 

       1、微服务之服务注册和服务发现

       2、微服务之api网关

       3、微服务之异步mq(最终事务一致性)

       4、微服务之分库分表

       5、微服务之全链路跟踪

     

 

    

 

 

注意事项:  一切都有源码  ,如需源码联系微信:hmsjava

 



 

 

 

 

  永久链接:http://hbhk888918.iteye.com/blog/2424166

 

 

  • 大小: 71.1 KB
  • 大小: 61.8 KB
  • 大小: 81.4 KB
  • 大小: 41.6 KB
  • 大小: 13.7 KB
分享到:
评论

相关推荐

    Dubbo和Spring Cloud微服务架构对比——服务注册和发现.docx

    ### Dubbo和Spring Cloud微服务架构对比——服务注册和发现 #### 微服务架构概述 在当前快速发展的软件行业中,微服务架构作为一种重要的设计模式,已经被广泛采纳。它通过将复杂的单体应用拆分为一系列相互独立的...

    如何使用Eureka服务器和Spring Cloud Netflix Eureka Server来实现微服务的服务注册和发现

    Eureka服务器和Spring Cloud Netflix Eureka Server是实现微服务架构中服务注册和发现的关键组件。微服务架构是一种将大型应用程序拆分成小而自治的服务的方法,而这些服务需要能够相互发现和通信。 使用Eureka...

    微服务之Eureka服务注册中⼼

    微服务架构中,服务注册中心是必不可少的组件之一,它提供了服务提供者和服务消费者的解耦,使得微服务系统更加灵活和可扩展。本文主要讲解了Eureka服务注册中心的实现原理、特点和优点,并对比了其他服务注册中心的...

    微服务和服务治理基础(Service Mesh)

    Service Mesh 是一种微服务架构的治理模式,它可以提供服务发现、流量控制、安全认证、监控和追踪等功能。Service Mesh 的主要组件包括: 1. 服务代理:负责服务之间的通信和流量控制。 2. 服务注册中心:负责服务...

    Python-用consul作为服务注册和发现的中心使用flask作为http服务器开发的微服务demo

    在这个项目中,Flask应用作为一个微服务实例,通过Consul进行服务注册和发现。 4. **服务注册**: 在启动Flask应用时,应用会向Consul注册自身,包括服务名、地址和端口等信息。这样,其他服务就能通过Consul知道该...

    微服务架构之服务发现1

    在微服务架构中,服务发现是核心组件之一,它使得服务之间的通信能够在动态变化的环境中保持高效和可靠。服务发现的主要目标是在服务实例频繁启动、销毁,网络地址不断变化的情况下,确保服务消费者能够找到并正确...

    spring cloud eureka微服务之——服务注册发现、服务消费者,服务提供者简单实例

    通过这个简单的实例,你可以了解到Spring Cloud Eureka在微服务架构中的核心功能,并能动手实践,加深对服务注册发现和服务消费的理解。对于初学者来说,这是一个很好的起点,有助于进一步探索Spring Cloud的其他...

    微服务架构核心组件:服务注册中心Eureka

    Spring Cloud是实现微服务架构的常用框架,其中Eureka是其关键组件之一,用于服务注册与发现。 Eureka是Netflix开源的一个服务注册中心,它的主要功能是为微服务架构中的各个服务提供注册和发现的能力。服务注册是...

    eureka(微服务之——服务注册发现、服务消费者,服务提供者简单实例)

    以上就是Eureka在Spring Cloud中的基本使用,通过服务注册和发现,我们可以轻松地管理微服务,实现服务之间的通信。在实际项目中,还可以结合Hystrix、Zuul等组件,进一步提升微服务架构的稳定性和可扩展性。

    微服务架构之注册中心.pdf

    微服务架构的注册中心是整个微服务系统的核心组件之一,主要扮演着服务发现与治理的角色。注册中心可以看作是分布式系统中的“通讯录”,它记录着各个微服务实例的位置信息以及服务状态,从而使得服务之间能够相互...

    微服务 服务与 无

    1. **服务治理:** 需要良好的服务注册、发现和管理机制。 2. **数据一致性:** 分布式系统中保持数据一致性是一个挑战。 3. **测试复杂性:** 需要为微服务架构设计集成测试和端到端测试。 4. **部署复杂性:** ...

    GeoDataSystem微服务注册与发现实践

    在学习和实践"GeoDataSystem微服务注册与发现"时,你需要理解微服务架构的基本原理,熟悉一种或多种服务注册中心的使用,以及如何在代码中实现服务的注册与发现逻辑。此外,对于服务治理的相关策略,如熔断、限流、...

    华为架构师8年经验谈:从单体架构到微服务的服务化演进之路(李林锋 DBAplus社群)

    3. **透明**:通过服务注册中心管理服务的发布和消费、调用关系。 4. **独立**:服务能够独立打包、发布、部署、启停、扩容和升级。 5. **分层**:梳理和抽取核心应用、公共应用,形成稳定的服务中心,快速响应市场...

    微服务学习微服务学习微服务学习微服务学习1

    此外,这份文档可能还会讨论微服务架构的挑战,比如服务发现、分布式事务和跨服务通信等问题。 接下来,"01 阿里巴巴微服务组件Nacos注册中心实战.pdf"是关于阿里巴巴的Nacos服务。Nacos是一个用于构建以服务为中心...

    euraka微服务注册中心与客户端实例

    Euraka是Netflix开发的一款开源项目,它主要用于服务发现和服务治理,是微服务架构中的关键组件。在Spring Cloud生态中,Euraka作为服务注册与发现的工具,使得微服务能够互相找到并通信。 首先,我们来看一下如何...

    微服务微服务微服务微服务.zip

    - **实现服务注册与发现**:部署服务发现机制,确保服务之间的通讯。 - **测试与部署**:进行集成测试,采用持续集成/持续部署(CI/CD)流程,如Jenkins或GitLab CI。 总之,微服务架构是现代企业级应用的首选...

    微服务架构-服务网关.docx

    用户请求时直接请求网关,网关做智能路由转发(包括服务发现,负载均衡)到 open-service,这其中包含权限校验、监控、限流等操作。 2. 引入网关的注意点:增加了网关,多了一层转发(原本用户请求直接访问 open-...

    唯品会微服务架构演进之路.pptx

    * 服务注册中心:提供服务注册、发现和路由的功能,确保服务之间的调用和交互。 * 服务网关:提供统一的入口点,对外提供服务,屏蔽内部服务的实现细节。 * 配置中心:提供统一的配置管理,确保服务配置的一致性和可...

    微服务开发各种注册中心对比

    服务注册与发现是微服务架构中的基础机制,通过服务注册中心,服务提供者将自己的信息注册到中心,服务消费者则从注册中心获取服务提供者的信息。这种机制实现了服务的解耦,并且有利于服务的动态扩展和故障转移。 ...

Global site tag (gtag.js) - Google Analytics