目录
一、微服务设计
二、技术选型
三、关键实现
四、服务注册
五、服务发现
目标
一、微服务包括那些内容
二、为什么会出现服务注册和服务发现
三、了解关键技术实现原理
一、微服务设计
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一致
未来预告
3、微服务之异步mq(最终事务一致性)
4、微服务之分库分表
5、微服务之全链路跟踪
注意事项: 一切都有源码 ,如需源码联系微信:hmsjava
永久链接:http://hbhk888918.iteye.com/blog/2424166
相关推荐
Eureka服务器和Spring Cloud Netflix Eureka Server是实现微服务架构中服务注册和发现的关键组件。微服务架构是一种将大型应用程序拆分成小而自治的服务的方法,而这些服务需要能够相互发现和通信。 使用Eureka...
Dubbo和Spring Cloud微服务架构对比——服务注册和发现,精心收集对比,绝对干活,对初学者及有一定使用的基础的绝对使用。
eureka(微服务之——服务注册发现、服务消费者,服务提供者简单实例)
eureka微服务之——服务注册发现、服务消费者,服务提供者非常简单的实例 下载下来,导入包就可以使用。提供给初学者的参考学习理解。如有spring cloud 相关疑问可以留言
1. 服务注册 — 存储服务的主机和端口信息 2. 服务发现 — 允许其他用户发现服务注册阶段存储的信息 1. 作为配置信息的存储的中心服务器 2. 命名服务
用consul作为服务注册和发现的中心,使用flask作为http服务器开发的微服务demo
第6章 微服务的注册与发现 第5章 微服务的协调者Spring Cloud 第4章 天气预报系统的微服务架构设计与实现 第3章 服务拆分与业务建模 第2章 基于Spring Boot快速构建天气预报系统 第1章 导学及SpringCloud...
高级Java人才培训专家-01-环境搭建、SpringCloud微服务(注册发现、服务调用、网关)
引入注册中心服务注册中心主要用于实现服务的注册和服务的发现功能,在微服务架构中,它起到了非常大的作用。注册中心的实现Dubbo 体系中的 Zookeeper、S
微服务开发服务注册与发现技术选型, 0侵入方式,Docker 应用
在上册中读者会学习到微服务架构所需的开发技能,包括使用SpringBoot搭建微服务开发框架,使用Node.js搭建微服务网关,使用ZooKeeper实现微服务注册与发现,使用Docker封装微服务,使用Jenkins部署微服务。...
包含核心的服务注册发现、配置中心、限流、路由、熔断等常用的服务治理能力。Spring Cloud Tencent 是基于 Spring Cloud SPI 实现的一站式微服务解决方案。通过集成 Spring Cloud 和腾讯中间件,让分布式服务和...
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您实现动态服务发现、服务配置管理、服务及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。
务注册发现、服务间REST和RPC通信、服务持续集成等功能。另外,结合Nginx 和Lua语言的OpenResty平台,开发了具有权限校验、流量控制、反向代理等功 能的高性能的API网关以及API网关的业务管理系统。
Eureka服务端介质,搭建本地的微服务注册与发现中心,spring开发必备,启动命令java -jar eurekaserver01-0.0.1-SNAPSHOT.jar > eurekaserver01.log
文章分析了电力云平台现有架构的特点及不足,提出建立统一的服务间通信机制以及服务注册与发现机制、服务网关等组件,并以此为设计依据提出了基于微服务架构的电力云平台总体设计方案,最后对微服务架构下的电力云平台...
CoSky 是一个轻量级、低成本的服务注册、服务发现、 配置服务 SDK,通过使用现有基础设施中的 Redis (相信你已经部署了Redis),不用给运维部署带来额外的成本与负担。 借助于 Redis 的高性能, CoSky 提供了超高...
物联微服务治理基础服务开发:基础服务发现、注册、 配置等等 <module>nbiot-base-config <module>nbiot-base-eureka <module>nbiot-base-hystrix <module>nbiot-base-turbine <module>nbiot-base-zipkin...