Dubbo + Zookeeper学习
由于射击App的后端本次将采用分布式架构开发,本文将记录b站学习的Dubbo教程
学习目标
- 互联网架构演变趋势
- RPC基于RMI的简单实现
- Dubbo介绍
- Dubbo-admin
- Zookeeper
- SpringBoot整合Dubbo
互联网架构演变趋势
随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。
单一应用架构
- 单体架构也称之为单体系统或者是单体应用。就是一种把系统中所有的功能、模块耦合在一个应用中的架构方式。一般只操作一个数据库。代表技术:
Struts2
、SpringMVC
、Spring
、Mybatis
等。 - 特点:打包成一个独立的单元(导成一个唯一的jar包或者是war包)。会以一个进程的方式来进行
- 优点:项目易于管理、部署简单
- 缺点:测试成本高、可伸缩性差、可靠性差、迭代困难、跨语言程度差、团队协作难
RPC架构
- 远程过程调用。他一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。代表技术:
Thrift
(Facebook开发的系统内部各语言之间细条通讯的RPC框架,带有强大的代码生成引擎,支持跨语言、多平台调用)、Hessian
(基于HTTP协议的RPC框架,提供RMI功能,且采用二进制协议的轻量级框架)等等. - 特点:应用直接调用服务,服务之间是隔离的.
- 缺点:服务过多时,管理成本高昂。服务治理,服务注册、发现,服务容错,服务耿总,服务网关,IP暴露等都是此架构无法避免的问题。
SOA架构
- SOA(Service oriented Architecture):面向服务架构
- ESB(Enterprise Service Bus):企业服务总线,服务中介。主要是提供了一个服务与服务之间的交互。
- ESB包含的功能如:负载均衡,流量控制,加密处理,服务的监控,异常处理,监控告急等等。代表技术:
Mule
(Java为核心的消息框架和整合平台,提供服务中介,数据转换,消息路由、服务创建和托管等功能。不是开源的技术,是付费产品。)、WSO2
(开源的服务总线,提供了SOA基础设施的搭建,内置数据服务支持,服务角色管理等功能)。
微服务架构:
- 微服务是一种架构风格。一个大型的复杂软件应用、由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好的完成该任务。微服务就是一个轻量级的服务治理方案。对比SOA架构,使用注册中心代替ESB服务总线。注册中心相比服务总线来说,更加轻量级。代表技术:
SpringCloud
,Dubbo
等等。 - 架构风格:项目的一种设计模式。常见的架构风格有:
[scode type="blue"]客户端与服务端的:在使用之前需要安装客户端的应用。如:QQ,网络游戏等
基于组件模型的架构:如:EJB(Session Bean实现业务逻辑的、Entity域模型、Manager Driven Bean驱动管理模型等)
分层架构(单体架构):典型的就是MVC架构
面向服务架构:将系统拆分为若干服务,业务功能基于服务实现,服务可独立配置、维护、运行、且多服务有统一的管理平台(ESB、注册中心)[/scode]