Dubbo学习01
参考视频:黑马程序员Dubbo快速入门,Java分布式框架dubbo教程_哔哩哔哩_bilibili
1. 大型互联网项目架构目标
互联网项目与传统项目的对比:
-
举例:OA、HR、CRM等传统项目;天猫、微信等互联网项目;
-
用户群体不同:传统项目面向针对性人群:企业员工;互联网项目面向人群:网民;
-
用户数量:互联网项目的用户数量更多;
-
用户敏感度:互联网项目的用户对应用的容忍度更低;
用户体验的方面:美观、功能、速度、稳定性;
- 美观由UI决定
- 功能由产品经理决定
- 开发负责速度和稳定性;其中速度是难点,稳定性可通过解决异常来提升;
互联网项目特点:
- 用户多;流量大、并发高;海量数据
- 易受攻击;
- 功能繁琐;需求变更快;
互联网项目目标:
- 高性能:提供快速的访问体验;
- 性能指标:
- 响应时间:执行一个请求从开始到最后收到响应数据所花费的总体时间;
- 并发数:系统同时能处理的请求数量;
- 并发连接数:客户端向服务器发送请求,并建立TCP连接。每秒钟服务器连接的总TCP数量;
- 请求数:QPS,每秒多少请求;
- 并发用户数:单位时间内有多少用户;
- 吞吐量:单位时间内系统能处理的请求数量;
- QPS:Query Per Second 每秒查询数
- TPS:Transactions Per Second 每秒事务数; 一个事务指一个客户机向服务器发送请求然后服务器做出反应的过程。
- 性能指标:
- 高可用:网站服务一直可以正常访问
- 可伸缩:通过硬件增加/减少,提高/降低处理能力
- 高可扩展:系统间耦合性低,方便通过新增/移除方式,增加/减少新的功能/模块
- 安全性:提供网站安全访问和数据加密,安全存储等策略
- 敏捷性:随需应变,快速响应;
2. 集群和分布式
集群:一个业务模块,部署在多台服务器上;通过增加机器节点来提升性能
分布式:一个大的业务系统,拆分为小的业务模块,分别部署在不同的机器上;通过拆分业务流程来提升性能;
类比:厨师(洗菜、切菜、炒菜、摆盘);集群增加多个厨师干一样的活,分布式增加多个厨师干不同的活;
集群和分布式一般两者并存来提升性能;
常规单台单业务结构:
多台单业务结构:
多台多业务结构:
3. 架构演进
架构演进流程:单体->垂直->分布式->SOA->微服务
1. 单体架构
优点:
- 简单:开发部署方便,小项目首选
缺点:
-
启动慢(项目越大启动越慢)、性能低
-
可靠性差(某个节点异常导致整个失败)、可伸缩性差(无法加快处理流程)、可扩展和可维护性差
2. 垂直架构
将单体结构中的多个模块拆分为多个独立的项目,形成多个独立的单体结构
存在问题:重复的功能太多;(同份功能要在每个单体中都要写)
3. 分布式架构
在垂直架构基础上,将公共业务模块抽取出来,作为独立服务,供其他调用者消费,以实现服务的共享和重用;
技术上:利用RPC来调用,Remote Procedure Call 远程过程调用,比如 HTTP REST风格、Java RMI规范、Webservice SOAP协议、Hession等等;
存在的问题:服务提供者一旦产生变更,所有消费者都需要变更
4. SOA架构
面向服务的架构 Service-Oriented Architecture : 一个组件模型,将应用程序的不同功能单元(服务)进行拆分,并通过这些服务之间定义良好的接口和契约联系起来;
ESB: Enterprise Service Bus 企业服务总线,提供服务交互,功能:负载均衡、流量控制、加密处理、服务监控、异常处理等;
5. 微服务架构
SOA架构上更进一步,提升的重点:业务需要彻底的组件化和服务化;
原有的单个业务系统可拆分为多个可以独立开发、设计、运行的小应用,小应用之间通过服务完成交互和集成;
Dubbo是SOA时代的产物,SpringCloud是微服务时代的产物;
[注]:目前Dubbo也提供相关微服务支持;
6711

被折叠的 条评论
为什么被折叠?



