博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
分布式理论
阅读量:2058 次
发布时间:2019-04-29

本文共 2264 字,大约阅读时间需要 7 分钟。

目录

1 架构

项目的主体结构。

实现业务功能的工程模块
为了应对业务功能之外的需求、压力给项目中增加的中间件等其他系统
为了让整个项目能够顺畅、高效的运行,需要把业务功能和中间件以及其他系统有效的整合起来

2 单一架构

2.1概念

一个工程→一个 war 包→运行在一个 Tomcat 上

all in one
单机版
……

2.2演变

2.2.1 水平拆分

把原来的一个工程拆分成多个模块分别进行开发,一定程度上提高了模块化程

度。
在这里插入图片描述

2.2.2 垂直拆分

按照业务功能把项目拆分成多个模块工程,但是由于彼此之间不存在模块之间

在这里插入图片描述

3 互联网时代的新挑战

3.1高可扩

项目设计架构的时候要考虑到功能的持续更新。

3.2高性能

提高响应速度,系统处理一个请求的时间尽可能短,减少用户等待的时间,优化用

户体验。

3.3高并发

用户访问量非常大时,会增加系统的并发压力。

4 分布式架构

4.1概念

一个项目拆分成多个模块工程,每个模块工程都是一个 war 包,运行在各自的

Tomcat 上,模块之间可以通过网络互相调用。
在这里插入图片描述

4.2方法远程调用

4.2.1 本地调用

在同一个项目内部,不经过网络直接调用方法。不管是我们自己声明的方法还

是第三方 jar 包中的方法都算本地调用。

4.2.2 远程调用

在这里插入图片描述

4.2.3 意义

对内:让我们能够实现分布式架构

对外:让我们能够调用第三方接口
发送短信
查询物流
执行支付
天气预报
股票行情
……

4.3思想

4.3.1 SOA

Service Oriented Architecture 面向服务的架构

在整个系统中,把相同的功能抽取出来作为一个服务,供系统中的其他模块调
用,提高代码的复用性
在这里插入图片描述
在这里插入图片描述

4.3.2 微服务

https://martinfowler.com/articles/microservices.html

The term "Microservice Architecture" has sprung up over the last few years to describe aparticular way of designing software applications as suites of independently deployable services.While there is no precise definition of this architectural style, there are certain common characteristics around organization around businesscapability,automated deployment, intelligence in the endpoints, and decentralized control of languages and data.

微服务强调的特征:独立、可部署。

4.4技术演进

4.4.1 WebService

解决应用程序之间的跨平台访问问题。基于 SOAP/WSDL 协议,让应用程序之

间可以进行远程通信。

4.4.2 Dubbo+Zookeeper

Dubbo:基于 RPC 的远程过程调用框架。

在这里插入图片描述
Zookeeper:基于树形目录结构、异步通知机制的注册中心。
在这里插入图片描述

4.4.3 SpringBoot+SpringCloud

SpringBoot:开发具体微服务,使用“场景启动器(starter)”快速整合第三

方中间件
SpringCloud:提供的微服务架构整体管理的一站式解决方案
Eureka:注册中心
Ribbon:客户端负载均衡
Feign:远程接口的声明式调用
Hystrix:服务的熔断、降级、监控
Zuul:网关

4.5相关概念

4.5.1 接口

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

在这里插入图片描述

4.5.2 远程接口的声明式调用

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

4.5.3 注册中心

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

在这里插入图片描述

4.6分布式架构优缺点

4.6.1 优点

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

有利于提升项目性能
整体提升
整个项目中每个模块都可以独占一台服务器,整个项目分配到的服务
器资源更多。
局部提升
由于对项目进行了拆分,所以可以有针对性的对项目中局部的模块进
行专门的优化。
纵向:给当前模块所在的服务器增加硬件资源
横向:给当前模块配置集

4.6.2 缺点

结构复杂

调用关系复杂
部署复杂
数据不一致问题
Session 不一致问题
分布式事务问题

4.7分布式和集群

4.7.1 相同点

都需要使用多台服务器

4.7.2 不同点

分布式:每台服务器上运行的模块不同——异构

集群:每台服务器上运行模块相同——同构
在这里插入图片描述

转载地址:http://vptlf.baihongyu.com/

你可能感兴趣的文章
【Pyton】【小甲鱼】类和对象:一些相关的BIF(内置函数)
查看>>
【Pyton】【小甲鱼】魔法方法
查看>>
单元测试需要具备的技能和4大阶段的学习
查看>>
【Loadrunner】【浙江移动项目手写代码】代码备份
查看>>
Python几种并发实现方案的性能比较
查看>>
[Jmeter]jmeter之脚本录制与回放,优化(windows下的jmeter)
查看>>
Jmeter之正则
查看>>
【JMeter】1.9上考试jmeter测试调试
查看>>
【虫师】【selenium】参数化
查看>>
【Python练习】文件引用用户名密码登录系统
查看>>
学习网站汇总
查看>>
【Python】用Python打开csv和xml文件
查看>>
【Loadrunner】性能测试报告实战
查看>>
【面试】一份自我介绍模板
查看>>
【自动化测试】自动化测试需要了解的的一些事情。
查看>>
【selenium】selenium ide的安装过程
查看>>
【手机自动化测试】monkey测试
查看>>
【英语】软件开发常用英语词汇
查看>>
Fiddler 抓包工具总结
查看>>
【雅思】雅思需要购买和准备的学习资料
查看>>