Spring Cloud之服务注册中心搭建Eureka Server服务注册中⼼
Spring Cloud并不与Spring MVC类似是一个开源框架,而是一组解决问题的规范;其是微服务架构应用的集大成者。微服务架构的核心关键点总结可参考如下图示:
1、服务治理:作为消费者如何访问并调用服务提供者所提供的的服务,作为服务提供在如何能让服务消费者知道并消费呢?在传统应用开发时通常是在开发语言层面上解决这个问题;但是在未付架构下,同一个微服务可能痛死存在多个实例并且这些微服务实例还在不停上下线,那么如何相知相识并进行通信呢?显然同物理地址显然不行,因为不知道服务提供在到底哪台服务器,服务当前是否在线。
同时,对于微服务架构应用来说还有一个重要考量因素:快速水平扩展——在进行此扩展时不可能预先知道所有的服务实例地址并告知消费者,而且也无法确定有哪些有多少消费者进行消费。
此时解决的方案就是服务治理(服务注册及服务发现)。其为SpringCloud的核心,实现上有多种选择,本文中涉及的Eureka是一种。Eureka提供了服务注册中心、服务发现客户端以及注册服务的UI界面应。
2、微服务的统一入口:微服务是众多的,大部分都会对外提供某种服务接口。对于前端或者第三方开发者来说,一定不愿意与多个服务地址打交道。对于微服务API服务网关就是为微服务提供统一访问入口的,并能附加一些路由规则使得不同的微服务通过路由规则提供一致的访问入口。
3、微服务的容错:网络访问是不可靠的,那么如何在一个微服务不可用时不会影响其他微服务及调用者以及如何有效放置服务调用失败而引起的“雪崩效应”呢?这就是容错机制需要解决的问题。
4、微服务的统一配置:
5、微服务的监控:
6、微服务的部署:在动辄几十个甚至上百个服务实例在线并且不断上下线的场景下,开发者一定不愿意通过手工方式构建和不是这些服务实例。此时,自动化似乎是必不可少的选择,一方面提升工作效率,另一方面通过自动化的方式才能保障所构建和部署的服务实例一致化。
目前实现的解决方案是:通过Docker工具来快速部署,通过K8s来构建自动化部署编排等。
Spring Cloud生态圈中的组件,按照发展可以分为第一点Spring Cloud组件和第二代Spring Cloud组件。具体如下图:
本文的焦点在1)服务管理:自动注册与发现、状态监管。关于服务注册中心,前面有文章介绍同时介绍了一款开源框架Zookeeper(博客后台 - 博客园 (cnblogs.com))——Dubbo就使用Zookeeper负责注册中心的工作。与此同时第一代Spring Cloud选用Eureka负责注册中心的工作。
探究Eureka之前先了解下服务注册中心相关概念:
服务注册中⼼本质上是为了解耦服务提供者和服务消费者(个人理解着重解决的是服务嵌套调用的解耦)。
其在Cloud整个体系架构中为下图中红框部分:
下面示例
一、搭建一个单例的Eureka Server服务注册中⼼:
1)导入坐标:
2)配置文件:
3)测试案例:
4)测试结果:
二、搭建Eureka Server HA高可用集群
由于是在个⼈计算机中进⾏测试很难模拟多主机的情况, Eureka配置server集群时需要执⾏host地址。 所以需要修改个⼈电脑中host地址:
127.0.0.1 EurekaServerA
127.0.0.1 EurekaServerB
如上搭建单个服务中心,但是配置文件需要修改:
测试案例: