背景
睿哥前天吩咐我去了解一下微服务,我本来想周末看的,结果周末没带电脑,所以只能周一看了。刚刚我就去慕课网看了相关的视频,然后写一篇文章总结一下。这篇文章算是基础理论版,等我之后进行更多的实践,我再去补充这篇文章。
什么是微服务?
慕课网中对于微服务给了一张这样的图片描述:
左图是单体服务架构,用户(司机和乘客)都通过一个固定的 REST API 进入系统。
而右图是微服务架构,系统被拆分成不同的服务,服务与服务之间通过 REST API 进行通信,而用户可以通过 API GATEWAY (网关)进入系统。
微服务的特点
看完视频后,我又去上网查找了一下微服务的定义,总结出来了微服务的一些特点:
1、微服务是一种架构风格
2、开发单个应用作为一系列小型服务(用户模块、订单模块、支付模块)的套件
3、每个服务运行在自己的进程中
4、不同的服务通过轻量级的机制实现彼此间的通信,这种机制通常是 HTTP 的资源 API
5、这些服务围绕着业务功能构建,通过完全自动化的部署机制进行独立的部署。独立部署意思就是每个服务都有自己的代码库、依赖项、配置文件和数据库。
6、这些服务的集中式管理做到了最小化(例如docker相关技术)
7、每一种服务都可以通过不同的编程语言编写
8、每一种服务都可以使用不同的数据存储技术
微服务的两大门派
微服务有两大门派,分别是 Dubbo 和 SpringCloud。
Dubbo 的话,它提供的组件并不全面,你看上图,很多组件都是无,你需要自己去集成。
SpringCloud 的话,它提供的组件很完全,而且全部都是自己家的,兼容性很强。
如果打一个比喻的话,Dubbo 就是组装电脑,SpringCloud 就是品牌机。
微服务的重要模块
服务描述、注册中心、服务框架、负载均衡、熔断和降级、网关