1.项目架构
1.1单一架构
描述:一个项目只有一个工程
其他名称:all in one 或 "单击版"
1.2分布式架构
1.2.1伪分布式
开发时使用了多个工程,但在服务器上运行时只有一个War包。
特性:垂直拆分
1.2.2真正的分布式
通过网络来进行方法的远程调用
2.方法本地调用和远程调用
2.1 本地调用
调用当前项目的内部方法,调用过程没有经过网络。
2.2远程调用
一个工程内的一个方法通过网络去调用另一个工程的一个方法
2.3实现方法远程调用的技术
2.3.1 webservice
webService 不是一个具体的技术,而是一系列方法远程调用技术的统称。而且很古老
2.3.2 Dubbo+Zookeeper
Dubbo 是阿里开发的一款RPC框架---底层基于RPC(远程过程调用)来远程调用和服务治理框架。
Zookeeper 是 Apache Hadoop 是一个树形的目录服务,支持变更推送,适合作为Dubbo服务的注册中心,工业强度较高,可用生产环境,并推荐使用。
在分布式架构体系中Dubbo扮演了服务治理框架的角色,Zookeeper扮演了服务注册中心的角色。
2.3.4 SpringBoot + SpringCloud
Spring boot 是 Spring 的一套快速配置脚手架,可以基于spring boot 快速开发单个微服务,Spring Boot,看名字就知道是Spring的引导,就是用于启动Spring的,使得Spring的学习和使用变得快速无痛。不仅适合替换原有的工程结构,更适合微服务开发。
Spring Cloud基于Spring Boot,为微服务体系开发中的架构问题,提供了一整套的解决方案——服务注册与发现,服务消费,服务保护与熔断,网关,分布式调用追踪,分布式配置管理等。
2.4方法远程调用的意义
2.4.1 对项目内部来说
让我们实现分布式架构。
2.4.2 对项目外部来说
让我们能调用外部的第三方接口。例如微信支付,物流信息,天气预报。
3.分布式架构的优缺点
3.1模块化程度更高
功能更加单一,有利于开发维护,让项目更容易开发,维护,分工。也是高内聚低耦合的一种体现。
3.2提升性能
需要用到分布式架构的项目往往是访问量很大的互联网项目。
集群(同构): 多个服务器运行相同的模块
分布式(异构):多个服务器运行不同的模块
3.3缺点
相对于单一架构结构更复杂,部署更复杂,同时存在数据不一致的问题,需要通过分布式事务解决。
4.服务
4.1 接口
对外暴露具体功能的接口,已经包括了外部调用时所需要的全部信息,所以这个接口就做成了整个功能的代表。
所以在团队交流时,就使用接口指代整个工程。
“写接口”: 开发接口代表的工程。
“调接口”:指的是要调用接口的工程
4.2 服务
和操作系统提供的“守护进程”形式服务很像,它持续在运行,实时可以相应请求。
提供服务。
服务提供者:provider
服务消费者:consumer
4.3 SOA
原形:Service Oriented Architecture
面向服务架构。
设计项目架构时,底层基于“服务”之间的调用设计项目架构。把相同功能封装到一个或一组服务中。
4.4 微服务
在服务的基础上,微小化服务。复用程度更高。
5.中间件
5.1 传统开发的组件
浏览器调用->Controller->service->mapper->database
5.2 中间件
redis 缓存
ElasticSearch 搜索
ActiveMQ 异步通信
FastDFS 分布式文件存储服务器
6.由浅入深了解/介绍分布式系统
6.1 分布式架构实现技术
- Dubbo+Zookeeper
- SpringBoot+SpringCloud
6.2 工程
- 工程清单
- 工程关系
- 继承
- 聚合
- 依赖
- 工程的作用
6.3 中间件
- 用到了哪些中间件
- 具体中间件和哪些功能相关
6.4 一个请求处理的流程
浏览器->consumer->provider->中间件/provider->返回值
6.5 业务功能
子系统->模块->子模块->类->。。。