分布式架构

一、概念

1. 方法远程调用

二、思想

2.1 SOA

Service Oriented Architecture 面向服务的架构。

在整个系统中,把相同的功能抽取出来作为一个服务,供系统的其他模块调用,提高代码的复用性。

2.2 微服务

微服务架构:其实和 SOA 架构类似,微服务是在 SOA 上做的升华,微服务架构强调的一个重点是“业务需要彻底的组件化和服务化”,原有的单个业务系统会拆分为多个可以独立开发、设计、运行的小应用。

微服务的调用方式:

① 远程过程调用(Remote Procedure Invocation)

直接通过远程过程调用来访问别的service。

示例:REST、gRPC、Apache、Thrift

② 消息

使用异步消息来做服务间通信。服务间通过消息管道来交换消息,从而通信。

示例:Apache Kafka、RabbitMQ

三、技术演变

3.1 WebService

解决应用程序之间的跨平台访问问题。基于 SOAP/WSDL 协议,让应用程序之间可以进行远程通信。
 

3.2 Dubbo+Zookeeper

Dubbo :基于 RPC 的远程过程调用框架。
Zookeeper :基于树形目录结构、异步通知机制的注册中心。

3.3 SpringBoot+SpringCloud

SpringBoot :开发具体微服务,使用“场景启动器( starter)”快速整合第三 方中间件
SpringCloud :提供的微服务架构整体管理的一站式解决方案

Eureka:注册中心

Ribbon:客户端负载均衡

Feign:远程接口的声明式调用

Hystrix:服务的熔断、降级、监控

Zuul:网关

四、相关概念

4.1 接口

一个以“接口”为功能代表的分布式环境下的服务模块。

 

4.2 远程接口的声明式调用 

@Controller
public class EmpController {
    @Autowired
    private EmpRemoteService empRemoteService;

    @RequestMapping("/xxx/xxx")
    public String xxx(){
         // 像调用本地方法一样调用远程方法。所有远程方法调用时产生的请求、响应等细节 全部被框架屏蔽了
        empRemoteService.xxx();
        return "xxx";
    } 
}

4.3 注册中心

远程接口的声明式调用之所以能够实现,就是因为 Dubbo 或 Feign 这样的框架把服务的具体信息存入了注册中心,对程序员在上层进行的具体代码编写全部屏蔽细节。

4.4 分布式架构优缺点

4.4.1 优点
 

 模块化程度更高,有利于分工

 有利于提升项目性能

 整体提升整个项目中每个模块都可以独占一台服务器,整个项目分配到的服务 器资源更多。

 局部提升由于对项目进行了拆分,所以可以有针对性的对项目中局部的模块进行专门的优化。

纵向:给当前模块所在的服务器增加硬件资源

横向:给当前模块配置集群

4.4.2 缺点
 

 结构复杂

 调用关系复杂

 部署复杂

 数据不一致问题

Session 不一致问题

 分布式事务问题

4.5 分布式和集群

4.7.1 相同点
都需要使用多台服务器
4.7.2 不同点
 
分布式:每台服务器上运行的模块不同——异构
 
集群:每台服务器上运行模块相同——同构
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值