一、前言
微服务技术用的人越来越多,很多公司都在将本身原有的系统微服务化。为什么微服务越来越香呢?
二、微服务的优点
1.开发简单、开发效率提高,一个服务可能就是专一的干一件事。
2.微服务能够被小团队单独开发,这个小团队是2到5人的开发人员组成
3.微服务是松耦合的,是有功能意义的服务,无论是在开发阶段还是部署阶段都是独立的。
4.微服务能使用不同的语言开发。
5.易于和第三方集成,微服务允许容易且灵活的方式集成自动部署,通过持续集成工具,如Jenkins。微服务易于被一个开发人员理解,修改和维护,这样的小团队能够更关注自己的工作成果。无需通过合作才能体现价值。
三、微服务框架:Spring Cloud
目前用的最广的微服务框架是Spring Cloud,Spring Cloud框架是基于Spring Boot 。目前Spring Cloud又两个体系一个是Spring Cloud Alibaba,另一个是Spring Cloud Netflix,他们两个是可以混用的。个人感觉Spring Cloud Netflix 将微服务的功能拆的更细,Spring Cloud Alibaba每个组建的Dashboard做的很漂亮。所以可以将两者结合使用。
四、项目架构
前段时间给一个客户做了一个项目,他们公司是又Java团队和.Net(C#)开发团队。Spring Cloud 真的是太适合了。因为Spring Cloud也可以和.Net Core 结合的很好。就比如Nacos + .Net Core MVC API 就很香啊。
下图是我给他们做的微服务架构图:
1、Nginx 是目前最常用的反向代理技术了。并且Nginx也支持动态服务代理。
2、网关组建采用Spring Cloud Netflix Zuul的技术,并且集成Spring Cloud Netflix Ribbon做负载均衡、集成Alibaba体系中的Sentinel做服务熔断。为什么不使用
Spring Cloud Netflix Hystrix做服务熔断呢,因为Hystrix的Dashboard给人的感觉太丑了,而Sentinel的Dashboard做的非常漂亮,使用也很方便。
3、注册中心使用的是Alibaba的Nacos技术,Nacos不仅可以做注册中心,也可以做服务配置中心。Spring Cloud Netflix 体系中的注册中心是Eureka、配置中心Config。同样是阿里的产品,Nacos 的Dashboard做的也是高端大气上档次。
4、服务监控使用Spring Boot Admin,该技术使用起来特别方便,只需要简单的配置即可。可是他展现出来给人的第一感觉就是精细。
5、服务之间相互调用使用的是Spring Cloud Netflix Feign技术。
6、消息中间件使用的是Spring Cloud Stream + RocketMQ 集群。Rocket是阿里的产品,其中的API对中国人更友好。但是Spring Cloud Stream对消息中间建做了统一API规范,这就导致我们不需要关注各个消息中间件的具体API。即使将RocketMQ换成RabbitMQ,该动量也很小。
7、分布式缓存使用Redis集群。
8、数据库使用读写分离,在配上数据库中间件Mycat,由Mycat去访问数据库。
5、总结
以上只是给各位读者提供一个解决方案的思路,后面的博客中我将会给大家展示各个中间件的用法。