【SpringCloud】03.微服务的设计原则
微服务的设计原则:一、AKF拆分原则业界对于可扩展的系统架构设计有一个朴素的理念:通过加机器就可以解决容量和可用性问题(如果一台不行就两台)。
1.Y轴(功能)Y轴扩展会将庞大的整体应用拆分为多个服务。每个服务实现一组相关的功能,如订单管理、客户管理等。在工程上常见的方案是服务化架构(SOA)。 但通过观察上图容易发现,当服务数量增多时,服务调用关系变得复杂。 2.X轴(水平扩展)x轴扩展与我们前面朴素理念是一致的,通过绝对平等地复制服务与数据,以解决容量和可用性的问题。 3.Z轴(数据分区)Z轴扩展通常是指基于请求者或用户独特的需求,进行系统划分,并使得划分出来的子系统是相互隔离但又是完整的。 工程领域常见的Z轴扩展有以下两种方案:
二、前后端分离原则何为前后端分离?前后端本来不就分离么?这要从尴尬的jsp讲起。分工精细化从来都是蛋糕做大的原则,多个领域工程师最好在不需要接触其他领域知识的情况下合作,才可能使效率越来越高,维护也会变得简单。jsp的模板技术融合了html和java代码,使得传统MVC开发中的前后端在这里如胶似漆,前端做好页面,后端转成模板,发现问题再找前端,前端又看不懂java代码......前后端分离的目的就是将这尴尬局面打破。 前后端分离原则,简单来讲就是前端和后端的代码分离,我们推荐的模式是最好采用物理分离的方式部署,进一步促使更彻底的分离。如果继续直接使用服务端模板技术,如: jsp,把java、js、html、css都堆到一个页面里,稍微复杂一点的页面就无法维护了。 这种分离方式有几个好处:
三、无状态服务对于无状态服务,首先说一下什么是状态: 那么这个无状态服务原则并不是说在微服务架构里就不允许存在状态,表达的真实意思是要把有状态的业务服务改变为无状态的计算类服务,那么状态数据 也就相应的迁移到对应的“有状态数据服务”中。 场景说明:例如我们以前在本地内存中建立的数据缓存、Session 缓存,到现在的微服务架构中就应该把这些数据迁移到分布式缓存中存储,让业务服务变成一个无状态的计算节点。迁移后,就可以做到按需动态伸缩,微服务应用在运行时动态增删节点,就不再需要考虑缓存数据如何同步的问题。 四、RestFul的通讯风格作为一个原则来讲本来应该是个“无状态通信原则”,在这里我们直接推荐一个实践优选的 Restful 通信风格 ,因为他有很多好处:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Java通用Observer模式实现未选中调用为原始类型
- IKAnalyzer结合Lucene实现中文分词(示例讲解)
- 使用try catch finally块时组织java代码
- Java List去重以及效率分析
- java – 修改CompositeRollingAppender如何重命名文件
- java – 如何在JTable中隐藏网格线
- 简单了解Spring中BeanFactory与FactoryBean的区别
- 使用Build.java替换build.xml,使用Java和Ant库作为构建系统
- java – 一起使用Platform.exit()和System.exit(int)
- java – 静态内部类需要导入注释