一、基础知识
1.分布式基础理论
1.1 什么是分布式系统
分布式系统是若干独立计算机的集合,这希望计算机对于用户来说就像是单个的完整的相关系统。
分布式系统是建立在网络之上的软件系统
随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构是在必行,亟需一个治理系统确保架构有条不紊的演进
1.2 发展演变
单一应用架构(ORM
):
将所有功能都部署在一起,减少部署节点和成本,小型用于简化增删改查的系统架构
缺点
: 扩展要重新对内容进行修改 然后重新打包部署,协同开发不方便,过大的单体项目对于服务器压力过大
垂直应用架构(MVC
)
缺点
:界面和业务逻辑的实现没有分离开,改前端界面会导致重新打包重新部署,应用之间不可能完全独立,因为各个应用之间会有交互
分布式服务架构(RPC:远程过程调用
)
界面和业务逻辑分离开,只需要界面调用需要用业务应用就可以,不同应用之间也可以互相调用
当A服务器要去调用B服务器内的功能,不同服务器之间服务调用 称为RPC
RPC(Remote Procedure Call):是指远程过程调用,是一种进程间通信方式,他是一种技术思想,而不是规范,他允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不是程序员显示编码这个远程调用的细节,即程序员无论是调用本地的还是远程的函数,本质上编写的调用代码基本相同
远程过程调用–过程:A服务器想要调用B服务器的方法,需要先连接服务器,两台服务器连接后,A服务器将调用信息(对象及参数
)及参数序列化发送给B服务器,B服务器收到信息,将信息反序列化获取并解析调用信息,调用对应的函数(服务处理
),获取返回值,再经过序列化,将执行结果返回给A服务器,A服务器又将消息反序列化 获得其中的返回值
RPC框架核心:只有两点,能否快速建立服务器之间的连接
, 序列化机制
RPC框架:Dubbo、gRPC、Thrift、HSF(High Speed Service Framework)
2.Dubbo
Apache Dubbo:高性能的JAVA RPC框架
具有如下特点:面向接口代理的高性能RPC调用,负载均衡、支持多种注册中心、高度可扩展、流量调度(灰度发布)、可视化运维管理
灰度发布:将旧版本服务慢慢全部替换为新版本服务
我们使用Zookeeper 作为注册中心