架构专题
2019-01-18 15:29:39 0 举报
AI智能生成
互联网架构
作者其他创作
大纲/内容
架构理论
预备知识
软件开发周期模型
迭代
agile
原型
软件设计原则
单一职责原则
里氏替换原则
依赖倒置原则
接口隔离原则
迪米特法则
开闭原则
设计模式GoF
Kiss原则(keep it simple,stupid)
领域驱动设计(DDD:Domain-Driven Design)
界限上下文
通用语言
领域
子域
核心域
支撑子域
通用子域
上下文映射图
六边形(Hexagonal)架构
文一
文二
云设计模式
分片sharding
数据库分库,业务分区,redis分片
挎斗sidecar
service mesh
绞杀者
新老系统迁移
CQRS(关联DDD)
文一
文二
文三
DCI模型架构
Data
Context
Interaction
文一
文二
Event-Driven Architecture(EDA)
文一
文二
文三
CAP/BASE
分布式事务
二阶段提交
三阶段提交
TCC
使用带事务的MQ来实现分布式事务
CAP
BASE
Clean架构
SOA
REST
架构思维
思考的多角度
从业务/需求方对系统,业务,需求进行思考
从老板的角度,商业实现,商业价值,最终目标等进行思考
从开发者,架构师,技术层面记性思考
俯视整个系统架构,让系统立体丰满
同时理解业务和技术
双面角色,对技术来说你是业务,对业务来说你是技术
将业务翻译为技术语言
全方位沟通,确定需求边界,项目推进与谈判
扛住来自需求方的压力
理解需求的变化并响应变化
画图
业务架构图
技术架构图
业务流程图
数据流程图
技术层面的思维
弹性
解耦
扩展性
前瞻性
异构
架构实战
架构的挑战
实际工作中的架构需求
已有成熟的系统和技术体系,在进行架构,需要遵循既有技术标准
中小公司新系统,会面临资源冲突的问题,时间和人力冲突,如何选型和决策
如何对付遗留系统和进行系统重构,系统迁移
异构系统如何处理
没有银弹,架构是个持续迭代和改进的过程
资源冲突
业务结果导向
先做出东西,然后逐步迭代
划分优先级
选用最简单最常用的技术
人力,时间和需求的冲突
业务架构
业务系统的复杂性,特别是ToB的,比如公司财务系统
业务系统的调用栈的深度,通常很深
对数据的要求,比如金融系统的严格要求
业务的抽象
核心业务与支撑业务
业务的优先级
长期目标和短期目标
目标客户
C端
B端
运营人员
对吞吐量的要求
对响应时间的要求
行业本身的需求和特点
技术架构
分布式/微服务
分布式一致性协议
注册中心
zokeeper
Eureka
ETCD(k8s)
Paxos
Raft
Zab
区块链
比特币
POW
双花问题
脑裂问题
Spring Cloud全家桶
RPC框架
hessian
feign
序列化
messagePack
json
优点与缺点
相对于聚合服务来说
微服务的部署与治理
k8s+docker
SaaS
成熟度模型
第0级(混乱):每次新增一个客户,都会新增软件的一个实例。
第1级(受控的混乱):所有客户都运行在软件的同一个版本上,而且任何的定制化都通过修改配置来实现。
第2级(多租户[multi-tenant]、高层建筑[Highrise]):所有的客户都已经可以在软件的同一个版本上运行了,而且他们都在同一个“实例”上运行。
第3级(多租户, 扩建[Build-Out]):此时你已经拥有了多租户、单一版本的软件模型。不过你还是可以通过硬件扩展(scale-out)的方式来进行扩充。
第4级(乌托邦):如同第3级,除非你可以找出有效的方式,以在不同的“实例”上运行不同版本的软件。
基本架构
呈现层
状态无关
接入层,权限校验
业务资源动态调度
业务层
固定业务层
扩展业务层
数据资源动态调度
数据层
固定数据
扩展数据
系统监控
业务监控
Iaas/Paas/SaaS
SaaS的关键点:多租户;硬件虚拟化
技术框架
负载均衡
negix
RPC框架
JSF
由dubbo进化而来
泛化调用
缓存
redis
数据库
mysql
部署
jenkis + vm
k8s + docker
MQ
jmq
rabbitmq
activemq
kafka
任务调度框架
数据库中间件
mycat
ShardingSphere
监控
JMX(Java Management Extensions,即Java管理扩展)
调用链
zipkin
cat
并发框架
disruptor
整体技术层次
基础服务(后台服务)
部署
jenkins + VM
k8s+docker
service mesh
负载均衡
neginx
缓存
redis
数据库
mysql
中间件
技术选型的原则
根据实际情况进行选择
查看评测
开源,良好的设计,易扩展,社区完善,资料多
网关
多机房
服务监控与治理
工具
Git
Maven
Sonar
业务逻辑
业务中台
服务内聚性高
图形的网状服务结构
访问量大,API日调用量会达到几十上百亿
高可用,高并发
一个业务的完整生命周期的管理
业务前台
依赖业务中台
直接展示给用户
高并发,高可用
数据的实时性有挑战
需求的易变和复杂性
电商小程序后台架构
需求快速变更的
高并发
高可用
兜底方案
个性化数据推送的挑战
扩展性
电商中台业务架构
鉴权系统架构
SaaS用户自定义模块架构
安全相关
文一
横行与纵向
从技术层面
横向看架构图
纵向看架构图
从业务层面
横向看业务
纵向看业务
数据库设计
索引, B+树
分库分表
主从,热备
动态扩容
倍增秒扩
增量扩容
宽表,窄表,中间表
元数据设计和通用表
数据库优化
服务治理,大促保障
0 条评论
下一页