前言:
目前在部门中涉及的项目基本上都是微服务架构,所以根据项目经验和相关资料写写关于对微服务的理解。如有错误,欢迎指出,不胜荣幸!
正文:
一、微服务架构的特点:
1、微服务将传统的单体应用(如SSM、SSH框架)拆分成网络服务,来实现模块化组件;
2、根据微服务架构的服务划分来分组职能团队,减少跨团队沟通;
3、一个服务对应一个团队,团队人员负责需求、设计、开发、测试等,开发之后在团队内进行运维和运营,不需要交付给其他团队;
4、去中心化、去SOA服务化的中心服务治理和去企业服务总线;
5、微服务注重服务的合理拆分、分层和构造,可建设自动化持续发布平台,并进行敏捷开发和部署;
6、具备兼容性设计、容错性设计和服务的契约设计。
注:关于第2和第3点,可以参见下图中的“传统服务的职能团队”和“微服务的职能团队”
图1 传统服务的职能团队
图2 微服务的职能团队
二、Spring Boot
Spring Boot是Spring Cloud构建微服务架构的基础。
在JEE时代,企业级开发涉及到的通用功能被提取到容器层实现。如下图所示:
Tomcat容器负责管理服务的启动、停止、监控、配置、日志等,应用开发人员只要按照规范将应用打包成war包,并发布到Tomcat容器中,就可以对外提供服务了。注意:这个时代的应用是包含在容器内的。
图3 传统应用框架
而Spring Boot的思路则刚刚好相反,它将容器嵌入到自启动的jar包中,在Spring Boot应用启动时,内部启动嵌入的容器,然后通过内嵌的服务器将应用中提供的服务暴露。
图4 Spring Boot应用框架
相比于传统的应用框架,Spring Boot框架的优点很明显:
1、可以创建独立、自启动的应用程序,不需要构建war包并发布到容器中;
2、通过Maven定制化标签,可快速创建应用程序;
3、很大程度自动化配置Spring,大大减少了人工配置各项参数;
4、基本上没有XML配置;
5、提供性能分析、健康检查等功能配置。
三、Spring Cloud Consul
Spring Cloud Consul主要包括:服务发现组件Consul、容错性组件Hystrix、智能路由组件Zipkin和客户端负载均衡组件Ribbon。其交互流程如下图所示:
1、服务注册在Consul服务器实例上;
2、Zipkin作为一个特殊的服务在Consul上注册并发现服务;
3、Zipkin作为网关,将发现的服务导出给PC网站、APP、开放平台使用;
4、RestTemplate/FeignClient使用简单的服务调用方法调用服务1、服务2等。
图5 Spring Cloud Consul交互流程
Spring Cloud Consul具有如下特点:
1、服务在Consul实例中注册,由Spring管理的Bean来发现和调用;
2、通过配置的方式可以启动嵌入式的Consul服务器;
3、Feign客户端通过声明的方式即可导入服务代理;
4、Zipkin使用Ribbon服务实现客户端的负载均衡;
5、通过声明的方式即可插入Hystrix客户端(部门项目中还没有使用);
6、通过配置的方式即可启动Hystrix面板服务器;
7、在Sping环境中可以直接配置Spring Cloud Consul组件;
8、Zipkin可以自动注册过滤器和路由器,形成一个方向代理服务器;
9、Hystrix面板服务器可以对服务的状态进行监控,并提供容错机制。
尾话:
推荐书籍:《分布式服务架构 原理、设计与实践》