微服务
1 微服务的介绍
1.1 微服务的定义
微,狭义来讲就是体积小、著名的"2 pizza 团队"很好的诠释了这一解释(2 pizza 团队最早是亚马逊 CEO Bezos提出来的,意思是说单个服务的设计,所有参与人从设计、开发、测试、运维所有人加起来 只需要2个披萨就够了 )。 而所谓服务,一定要区别于系统,服务一个或者一组相对较小且独立的功能单元,是用户可以感知最小功能集。
1.2微服务的由来
微服务最早由Martin Fowler与James Lewis于2014年共同提出,微服务架构风格是一种使用一套小服务来开发单个应用的方式途径,每个服务运行在自己的进程中,并使用轻量级机制通信,通常是HTTP API,这些服务基于业务能力构建,并能够通过自动化部署机制来独立部署,这些服务使用不同的编程语言实现,以及不同数据存储技术,并保持最低限度的集中式管理
1.3微服务的特点
微服务架构和其他架构的对比
特点:
1)集中式架构:单体无分散
2)分布式架构:分散压力
3)微服务架构:分散能力
微服务架构优势
1)每个微服务组件都是简单灵活的,能够独立部署。不再像单体应用时代,应用需要一个庞大的应用服务器来支撑。
2)可以由一个小团队负责更专注专业,相应的也就更高效可靠。
3)微服务之间是松耦合的,微服务内部是高内聚的,每个微服务很容易按需扩。
2 微服务的四种原则
2.1 AKF拆分原则
AKF扩展立方体(参考《The Art of Scalability》),是一个叫AKF的公司的技术专家抽象总结的应用扩展的三个维度。理论上按照这三个扩展模式,可以将一个单体系统,进行无限扩展。
X 轴 :指的是水平复制,很好理解,就是讲单体系统多运行几个实例,做个集群加负载均衡的模式。
Z 轴 :是基于类似的数据分区,比如一个互联网打车应用突然或了,用户量激增,集群模式撑不住了,那就按照用户请求的地区进行数据分区,北京、上海、四川等多建几个集群。
Y 轴 :就是我们所说的微服务的拆分模式,就是基于不同的业务拆分。
2.2 前后端分离
前后端分离原则,简单来讲就是前端和后端的代码分离也