在阿里内部,通用的RPC框架是HSF,现在的业务更多的是部署在集团外的环境,新做的项目都是不再用集团内部的HSF,而是采用另一个开源的阿里RPC框架-dubbo,趁此机会好好学习dubbo。
1、什么是RPC?与SOA的关系?
RPC即远程过程调用: 两台服务器A、B,分别部署不同的应用a,b。当A服务器想要调用B服务器上应用b提供的函数或方法的时候,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义传达调用的数据。 SOA是面向服务的软件架构,它的基本设计原理是:服务提供一个简单的接口,抽象了底层的复杂性,然后用户可以访问独立的服务,而不需要去了解服务底层平台实现。RPC可以算是SOA的一种实现。
2、电商服务架构的发展
第一个阶段 :在业务访问量不大的时候,一台服务器部署一个应用+数据库也就够了;
第二个阶段:在访问量稍微大了之后,增加服务器,搭建集群,架设Nginx,由nginx负责把请求分发到其他服务器上;
第三个阶段:再过段时间,访问量增长,数据库宕机,数据库读写分离,再架设几台数据库服务,做主从,做分库分表
第四个阶段:为了数据库的健壮性,加上了缓存,把用户访问频率高的数据放入缓存
第五个阶段:整个项目越来越大,修改一个功能就需要服务器全部发布,切换nginx重启,发布流程越来越长,越来越复杂。然后进行模块拆分,修改功能时只需要修改对应模块就行。但是在进行发布时,还需要切换nginx服务,把要重启的服务流量切换到可用的服务上。
第六个阶段:所有服务启动的时候注册到一个注册机上,然后顶层处理在接收到nginx请求时,去注册机找一个可用的服务并调用接口。
3、dubbo是什么?
dubbo是一款基于java的高性能和透明化的RPC远程调用服务方案。是阿里巴巴的第一代rpc框架,也是国内第一款成熟的商用机RPC框架。现在,在阿里内部,dubbo已经被第三代RPC框架HSF所取代,但是在阿里外部,dubbo还是应用的非常广泛,比如当当,京东等大公司都在使用。简单来说,dubbo是:一款分布式服务框架;高性能和透明化的RPC远程服务调用方案;SOA服务治理方案