笔记
先来认识各大组件SpringCloud:
- Eurka注册中心,
- Zuul网关验证,
- Config分布式配置管理
- Ribbon负载均衡
- Feign接口调用
- Hystrix容错处理
- Sleuth微服务追踪
- Elk+Kafka日志收集
RabbitMq中间件:解决高并发
发布采用:Jenkins+docker(CI/CD)发布
Mycat:数据库中间件
sonarQube代码检测
解决思路
- 模块之间拆分后怎么找到,发现其他模块?
通过Eurka注册中心,有了各个服务的地址清单。 - 接下里就是调用的问题了,之前单体时只需要浏览器发一个http请求自己内部去处理,但是现在把自己拆成各个模块,并且不再一个服务器上,假如浏览器发了一个请求给了一个模块,这个模块处理时需要借助其他模块的方法,这时该怎么调用,也不能让客户自己去调用,,
通过Feign组件来实现互相调用。 - 互相调用难免会出错,出错了怎么办?
通过Hystrix、
微服务架构相关概念和设计理念
将单体的项目拆分成多个模块项目,模块之间通过接口来调用。
单体式架构:项目迭代不灵活,并发配置不灵活,面对的是用户内部
微服务:就是拆,项目复杂度降低,团队界限明确,部署灵活,但同时运维复杂度提高。面对的是大用户哦,高并发。
微服务架构种类:
- Dubbo:基于RPC
- SpringCloud:基于Restful
微服务架构-服务类型:
- Provider:提供者,提供服务的一方
- Consumer:消费者,调用服务的一方
假如把单体项目拆成三个模块,分别为用户,节目,订单模块,每个模块又拆成消费者和提供者
微服务架构-通信方式
- RPC:(Remote Procedure Call)基于TCP,平台有关 ,效率高,以方法为中心
远程过程调用协议,暂时理解:想要调用别人的服务,需要用人家的技术如(注解,方法)等东西
就像调用自己本地的方法一样调用远程的方法 - RESTful:(Representational State Transfer)基于HTTP,平台无关,效率低,以资源为中心
通过url,访问所需资源,(无状态),
微服务架构-设计原则
- 单一职责
- 围绕业务
- 谁创建,谁负责(开发加运维)运维统一管理会很麻烦。
分布式和集群
- 分布式:关注项目拆分,项目ABC拆成A,B,C,三个项目
- 集群:关注项目部署,项目ABC复制三个ABC,分别部署到三个服务器
大觅网架构设计
业务架构
谁要使用这个系统,可以为用户提供什么样的功能
应用架构
以业务架构为基础,系统中有多少应用,每个应用是干什么,
如:前端应用,网关应用,后端应用,环境应用
技术架构
前端:vue
反向代理:Nginx
网关Zuul
消费者:fegin:接口管理,hystric:容错处理,Rabbin:负载均衡
注册中心:Eurka
提供者:fegin:接口管理,hystric:容错处理,Rabbin:负载均衡
缓存器:redis
搜索器:Elasticsearach
数据库管理:Mycat
整体:docker和Jenkins
数据库架构
大觅网项目管理
版本管理-Git
分布式版本控制系统(DVCS)
代码规范管理-SonarQube(SonarLint)
项目敏捷管理-Scrum
敏捷开发(Agile Development)
以人为核心,遵循迭代,循环渐进的开发方法
敏捷的框架
XP,Scrum
Scrum
将整个开发周期划分为若干个小的迭代周期的一种项目管理框架2