系统架构演进,待续

系统架构演进
单一应用架构 
当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。 
此时,用于简化增删改查工作量的 数据访问框架(ORM) 是关键。
垂直应用架构 
当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。 
此时,用于加速前端页面开发的 Web框架(MVC) 是关键。
分布式服务架构 
当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,
使前端应用能更快速的响应多变的市场需求。 此时,用于提高业务复用及整合的 分布式服务框架(RPC) 是关键。
流动计算架构 
当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,
提高集群利用率。 此时,用于提高机器利用率的 资源调度和治理中心(SOA) 是关键。

根据现在团队的业务系统情况,首先我们要梳理出现存的问题是什么:
     多种调用传输方式:HTTP方式、WebService方式;
     服务调用依赖关系:人工记录,查看代码分析;
     服务调用性能监控:日志记录,人工查看时间;
     服务与应用紧耦合:服务挂掉,应用无法可用;
     服务集群负载配置:Nginx配置,存在单点问题;

在去选择技术框架时,技术框架最基本要解决上面现存问题,同时我们也要确认出我们的期望,要达到的目标是什么:
     支持当前业务需求,这是最最基本的条件;
     服务避免单点问题,去中心化;
     服务高可用、高并发,解耦服务依赖;
     服务通用化,支持异构系统调用服务;
     解耦系统服务间依赖,去重复;
     服务依赖关系自维护,可视化;
     服务性能监控自统计,可视化;
     服务需自带注册、发现、健康检查、负载均衡等特性;
     开发人员关注度高,上手快;

SOA (面向服务的架构)Service-Oriented Architecture 
微服务msa
微服务相比于SOA更加精细 ,微服务更多的以独立的进程的方式存在,互相之间并无影响;
 微服务提供的接口方式更加通用化 ,例如HTTP RESTful方式,各种终端都可以调用,无关语言、平台限制;
 微服务更倾向于分布式去中心化的部署方式 ,在互联网业务场景下更适合;


微服务调用为啥用RPC框架,Http不更简单吗?RPC框架除了HTTP实现外,私有协议不具备通用性.?
http接口是在接口不多、系统与系统交互较少的情况下,解决信息孤岛初期常使用的一种通信手段;
优点就是简单、直接、开发方便。
如果是一个大型的网站,内部子系统较多、接口非常多的情况下,RPC框架的好处就显示出来了:
首先就是长链接,不必每次通信都要像http一样去3次握手什么的,减少了网络开销;
其次就是RPC框架一般都有注册中心,有丰富的监控管理;发布、下线接口、动态扩展等,对调用方来说是无感知、统一化的操作。
最后是安全性。

通过RPC能解耦服务,这才是使用RPC的真正目的。

RPC:Remote Produre Call-远程过程调用,像调用本地方法一样调用远程方法
RPC采用客户端(服务调用方)/服务端(服务提供方)模式,各自独自运行。
RPC主要的依赖的技术包括序列化、反序列化和数据传输协议。
基础概念
RMI(Remote Method Invoke,远程方法调用)代理模式通过代理对象将方法传递给实际对象;
stub(桩)驻留客户端,承担远程对象实现者的角色;
skeleton(骨架)帮助远程对象与stub连接进行通信。

时序
    1.客户端(client)通过本地调用的方式调用服务
    2.client stub接收到调用方法之后将参数、方法封装成能够网络传输的消息体(序列化)
    3.client stub找到服务地址,并将消息发送到服务端
    4.server stub接收消息并解码(反序列化)
    5.server stub根据解码结果调用本地服务
    6.本地服务奖调用结果返回给server stub
    7.server stub将返回结果打包成消息(序列化)发送至调用方
    8.client stub接收消息并解码(反序列化)
    9.客户端得到最终结果

RMI调用过程
    1.服务端向RMI注册服务绑定自己的地址
    2.客户端通过RMI注册服务获取目标地址
    3.客户端调用本地stub对象上的方法,与调用本地方法一致
    4.本地stub对象将调用信息打包(序列化),通过网络发送给服务端
    5.服务端skeleton对象接收到网络请求,对调用信息进行解包(反序列化)
    6.服务端真正服务调用发起调用,并将返回结果打包(序列化)发送给客户端
    7.客户端解包(反序列化)结果,获取服务调用结果
在RMI调用中,有以下几个核心概念
    1.通过接口进行远程调用
    2.通过客户端stub对象和服务端skeleton对象帮助远程调用伪装成本地调用
    3.通过RMI注册服务完成服务的注册与发现


常见RPC框架
常见RPC框架方案有RMI(JDK自带),Hessian,Dubbo,Hprose,Thrift等


扩展:
IaaS:Infrastructure-as-a-Service(基础设施即服务)
PaaS:Platform-as-a-Service(平台即服务)
SaaS:Software-as-a-Service(软件即服务)

参照:
https://blog.csdn.net/u013952133/article/details/79622786
云计算之IasS、PasS、SaaS
https://www.sohu.com/a/250891912_100233513
Iass、Pass、SasS三种云服务区别 
https://www.cnblogs.com/lykbk/p/fdf34345435435435345453.html
各大开源rpc 框架 比较
https://developer.51cto.com/art/201904/595840.htm
微服务调用为啥用RPC框架,Http不更简单吗?
https://developer.51cto.com/art/201908/601617.htm
6种微服务RPC框架,你知道几个?
做后的图很好。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值