SpringCloud初学随感 二
- 区别(MVC,RPC,SOA,微服务的区别)
- 微服务原则
区别(MVC,RPC,SOA,微服务的区别)
MVC:是单体建构,操作单一的数据库,主要用到的技术有ssm
面向服务的技术分为:RPC,SOA,微服务技术,这三类技术里面涉及到的都是服务,并且涉及到的数据库不仅仅是单一的数据库。
RPC:远程过程调用技。是一种通过网络从远程计算机请求服务,而不需要了解底层网络技术的协议。直接是通过应用出发服务,服务与服务之间的联系不密切。
主要的技术为:Thrift,Hessia等技术。
当服务非常多的时候,RPC就显得乏力,于是演变出了SOA架构与微服务架构。
SOA:应用与服务之间有了一层ESB(企业服务总线,是服务的中介存在,加强了服务与服务之间的联系,主要有,流量监控,负载均衡,加密处理,服务控制,异常处理),让服务与服务之间进行了交流。
主要的代表即使:MULE。WSO2
微服务:与SOA之间的区别是中间将ESB使用更加轻量级别的EUREKA与ZK.是一种轻量级的治理方案。
主要的技术有:SpringCloud,Dubbo.
微服务原则
- AKF拆分原则 。
业界统一的认知是通过加机器解决容量与可用性的问题,也称水平扩展,但是对于功能与模块上带来的系统复杂问题以及业务的变化带来的提供差异化服务问题,但是很多的系统在创建的时候没有考虑到这一点,导致系统的重构,因此提出AKF可扩展立方,建立XYZ轴。
Y轴表示根据业务拆分成多个服务,当拆成多个服务时要调用的数量变得不可控制,引发服务管理上的混乱,于是想到服务注册形成服务网关进项服务的管理
X轴水平扩展(传统的方式就是加机器处理该问题,做集群处理,于是涉及到负载均衡中的轮询处理)。当一个服务上的压力比较大的时候,进行水平扩展,将服务放到不同的服务器上。对每一个服务的性能进行了提升。
Z轴是数据分区:服务与数据的优先级划分,如按照地域的划分。是基于用户或者请求这独特的需求,进行系统划分并使得划分出来的子系统是相互隔离但又是完整的。在工程领域有两种划分形式:
1)单元化架构:在微服务领域,一个单元满足某个分区所有业务操作的自包含闭环,是每一个单元自成一体
2)数据分区:为了性能数据安全上的考虑,将一个完整的数据按照一定的维度划分出不同的子集,一个分区就是整体数据集的子集。例如打车软件,将数据量大批进来时,性能变差,为了解决性能问题,按照不同的城市访问不同城市的数据,就是数据分区,而这个城市的数据就是整个城市数据中的子集。这就是数据分区的最好例子。数据划分方式:数据范围,数据热度,读写分离,数据类型。 - 前后端分离原则 。
将前端定义成一个服务,将后端定义成另一个形式,之间用接口进行调用,这就是前后端分离的形式。之前的jsp种整合html与Java代码,没有实现前后端分离,在单体项目中,前后端完全属于耦合,前后端分离使用物理分离。
在浏览器与后台服务之间加前端服务,并有一下几个特点:
1)处理客户端请求,并给客户端返回响应
2)根据客户端的请求调用后台服务的接口,做数据的采集。
3)将采集到的数据渲染到前端提供的模板中。并将试图返回给前端浏览器
通过搭建前端服务实现前后端分离。 - 无状态服务 。
状态:如果一条数据被多个服务共享才能完成完成一笔交易,这条数据被称为状态,依赖与数据的服务被称为有状态服务,反之则是无状态服务,举例说明:如果没有有状态的服务,数据处理集中在无服务状态中,形似的数据处理就会显得多余,于是将多余的数据处理集中到有状态服务中,于是在无状态服务中更多的是考虑业务而非考虑数据。 - Restful通信分格 。
客户端与服务之间,服务与服务之间的通讯方式是Restful通讯方式,优势:
1)使用无状态协议http。
2)json报文序列化。
3)跨平台多语言实现。