Dubbo基础知识
一:基本概念
软件架构的发展过程
单体架构-----垂直架构-----SOA架构-----微服务架构
- 单体架构:(All In One)所有的服务集中在一个应用,扩展时需要横向扩展整个系统(成本较高)。
- 优点:适用于小型项目,开发部署简单易用
- 缺点:大型项目不易开发与维护;只能使用一种开发语言;扩展成本高
- 垂直架构:根据业务进行整个应用的切割,拆成几个互不影响的应用。
- 举例说明下:一个系统包含用户管理,订单模块,物流模块,垂直架构就是,将系统根据业务分为用户管理和订单模块,用户管理和物流模块两个应用,分别部署,由于公用模块用户管理无法复用,这也是垂直架构的一个痛点。
- 优点:实现了系统的业务的分离,能够进行模块的单独部署
- 缺点:系统的切割粒度过大;扩展只能采用集群方式;公共模块无法复用,项目之间功能冗余。
- SOA架构(Service-Oriented Architecture):面向服务架构
- 定义:将重复的功能或模块抽取成组件的形式,对外服务;项目与服务之间使用ESB(企业服务总线)的形式作为通信的桥梁。
- 缺点:依赖于ESB(中央管理模式进行各应用之间的交互运作)。
- 微服务架构:单独部署,独立运行。
- 定义:将系统服务完全独立出来,抽取为一个个职责单一的服务,服务之间采用轻量级的框架协议(Http)进行交互。
- 优点:每个服务足够内聚,足够小,代码容易理解、开发效率提高;服务之间可以独立部署,微服务架构让持续部署成为可能;每个服务可以各自进行横向扩展和纵向扩展,而且,每个服务可以根据自己的需要部署到合适的硬件服务器上;容易扩大开发团队,可以针对每个服务(service)组件开发团队;提高容错性(fault isolation),一个服务的内存泄露并不会让整个系统瘫痪;系统不会被长期限制在某个技术栈上。
- 缺点:从优点中推其缺点
- 服务众多,难以维护与管理(Dubbo+ZK,SpringCloud)。
- 服务间交互通讯是不可靠的(RPC)
- 分布式事务处理(数据一致性)
- 单独部署就意味着每一个服务都拥有自己数据落地存储(MySQL),也就意味着微服务的扩展,只能采用集群方式。
SOA机构与微服务架构一脉相承,微服务架构做了更细致的处理(服务的颗粒度更小,去中心化,去ESB)。
功能 | SOA | 微服务 |
---|---|---|
组件大小 | 大块业务逻辑 | 单独任务或小块业务逻辑 |
耦合 | 通常松耦合 | 总是松耦合 |
公司架构 | 任何类型 | 小型、专注于功能交叉的团队 |
管理 | 着重中央管理 | 着重分散管理 |
目标 | 确保应用能够交互操作 | 执行新功能,快速拓展开发团队 |
Dubbo概念简介
以下内容摘自dubbo官网:
dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。
dubbo就是一款解决服务间通信的框架,它能让不在一台服务器的各个服务进行相互调用,对使用者来说就像调用本地方法一样,并为我们整合了智能容错和负载均衡,当某个服务不可用或是当某个服务新增时dubbo会自动发现并注册他们。dubbo还提供了管理控制台,我们可以很直观的看到当前注册中心的状态以及注册中心中注册的服务(包括服务的提供者和消费者;dubbo推荐ZK作为其注册中心),还可以对这些服务进行各种管理,包括服务动态配置,负载均衡,访问控制,权重管理等等
二:基本结构与流程
dub