一、分布式架构
1. 项目的主体结构
- 实现业务功能的工程模块
- 为了应对业务功能之外的需求,压力给项目中增加的中间件等其他系统
- 为了让整个项目能够顺畅,高效的运行,需要把业务功能和中间间以及其他系统有效的整合起来。
2. 单一架构( all in one )
一个工程——一个war包——运行在一个tomcat中
演化:
水平拆分:把原来一个工程拆分成为多个模块分别进行开发,一定程度上提高了模块程度
垂直拆分:按照业务功能把项目拆分成多个模块工程,但是由于彼此之间不存在模块之间的调用。所以还不能算作一个真正的分布式架构,相当于把一个项目拆分成多个小项目分别开发
3. 互联网时代的新挑战
- 高可拓
项目设计架构的时候要考虑到功能的持续更新
- 高性能
系统处理一个请求的时间要尽量变短
- 高并发
用户访问量非常大时,会增加系统的并发压力
4. 分布式架构
一个项目拆分成多个模块工程,每一个模块工程都是一个war/jar包运行在自己的tomcat中,模块之间可以通过网络互相调用
5. 方法的远程调用
本地调用:
在同一个项目内部不经过网络进行方法的调用,不管是我们自己声明的还是第三方jar包中的方法都算本地调用
远程调用:
6. 思想
- SOA
- Service Oriented Architecture 面向服务的架构
- 在整个系统中,把相同的功能抽取出来作为一个服务,供系统中的其他模块调用,提高代码复用性
7. 微服务
8. 技术演进
- WebService
- 解决应用程序之间的跨平台访问问题。基于 SOAP/WSDL 协议,让应用程序之 间可以进行远程通信
- Dubbo + Zookeeper
- Dubbo:基于 RPC 的远程过程调用框架。
- Zookeeper:基于树形目录结构、异步通知机制的注册中心。
spring boot + spring cloud
接口
一个以 “接口”为功能代表的分布式环境下的服务模块
- 注册中心
远程接口的声明式调用之所以能够实现,就是因为有Dubbo或Feign这样的框架把服务的具体信息存储了注册中心,对程序员在上层进行的具体代码编写全部屏蔽 细节