Ai聘网|Ai聘网谈微服务的4个设计原则和19个解决方案(2)三、微服务应用4个设计原则
北京联盟_本文原题:Ai聘网谈微服务的4个设计原则和19个解决方案(2)
三、微服务应用4个设计原则
本文插图
Ai聘网总结了四个原则推荐给大家:
- AKF拆分原则
- 前后端分离
- 无状态服务
- Restful通信风格
本文插图
AKF扩展立方体(参考《The Art of Scalability》) , 是一个叫AKF的公司的技术专家抽象总结的应用扩展的三个维度 。 理论上按照这三个扩展模式 , 可以将一个单体系统 , 进行无限扩展 。
- X 轴 :指的是水平复制 , 很好理解 , 就是讲单体系统多运行几个实例 , 做个集群加负载均衡的模式 。
- Z 轴 :是基于类似的数据分区 , 比如一个互联网打车应用突然或了 , 用户量激增 , 集群模式撑不住了 , 那就按照用户请求的地区进行数据分区 , 北京、上海、四川等多建几个集群 。
- Y 轴 :就是我们所说的微服务的拆分模式 , 就是基于不同的业务拆分 。
2.前后端分离
本文插图
前后端分离原则 , 简单来讲就是前端和后端的代码分离也就是技术上做分离 , 我们推荐的模式是最好直接采用物理分离的方式部署 , 进一步促使进行更彻底的分离 。 不要继续以前的服务端模板技术 , 比如JSP, 把Java JS HTML CSS 都堆到一个页面里 , 稍复杂的页面就无法维护 。 这种分离模式的方式有几个好处:
- 前后端技术分离 , 可以由各自的专家来对各自的领域进行优化 , 这样前端的用户体验优化效果会更好 。
- 分离模式下 , 前后端交互界面更加清晰 , 就剩下了接口和模型 , 后端的接口简洁明了 , 更容易维护 。
- 前端多渠道集成场景更容易实现 , 后端服务无需变更 , 采用统一的数据和模型 , 可以支撑前端的web UI\ 移动App等访问 。
本文插图
对于无状态服务 , 首先说一下什么是状态:如果一个数据需要被多个服务共享 , 才能完成一笔交易 , 那么这个数据被称为状态 。 进而依赖这个“状态”数据的服务被称为有状态服务 , 反之称为无状态服务 。
那么这个无状态服务原则并不是说在微服务架构里就不允许存在状态 , 表达的真实意思是要把有状态的业务服务改变为无状态的计算类服务 , 那么状态数据也就相应的迁移到对应的“有状态数据服务”中 。
场景说明:例如我们以前在本地内存中建立的数据缓存、Session缓存 , 到现在的微服务架构中就应该把这些数据迁移到分布式缓存中存储 , 让业务服务变成一个无状态的计算节点 。 迁移后 , 就可以做到按需动态伸缩 , 微服务应用在运行时动态增删节点 , 就不再需要考虑缓存数据如何同步的问题 。
4.Restful通信风格
本文插图
作为一个原则来讲本来应该是个“无状态通信原则” , 在这里Ai聘网直接推荐一个实践优选的Restful 通信风格, 因为它有很多好处:
推荐阅读
- 互联网|中台产品经理实战(14):中台与SaaS、微服务关系
- 招生|有道词典与中国教育在线合作,开通“高考招生”直播服务
- 融资并购|餐饮SaaS服务商融资数千万元:服务商家数超10万 粉丝累计3000万
- 技术编程|无服务器调研,部署REST API是最普遍用例
- 互联网|阿里为啥不用 ZooKeeper 做服务发现?
- 互联网|「微服务架构」Kafka和Moskitto那个更适合微服务之间的通信?
- |携号转网服务用户突破千万 仅 1.3% 用户回到原运营商
- 砍柴网|携号转网服务用户突破千万 仅 1.3% 用户回到原运营商
- 互联网|东莞先知大数据:用大数据服务社会治理和智能制造
- |服务设计作品集中,常见的三大创作难点