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

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

阅读更多

 目录

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

 

目标

一、微服务包括那些内容

 

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

 

 

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

 

 

一、微服务设计

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
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics