架构概论
- Reliable Scalable Distributed(可靠的、可扩展的、分布式的),高并发,可靠性,性能
- Distributed Middleware(分布式中间件)
- Micro Service(微服务)
- DevOps(开发运维一体化),Docker,K8s,CI/CD
- Service Mesh,解决性能问题,每一个物理节点上有一个代理节点,节点与节点之间通信,代理节点完成末端的统一接口,这样就可以让我们的集群网络通信、开发成本降低
- AIOps(人工智能运维)
- ChatOps(聊天室运维)
- Serviceless(无服务化)
顶层设计
- 按需、预期未来,规划企业架构
- 业务全局出发,制定可落地的架构方案
- 技术选型、难题解决规划
- 方案与代码,广度与深度
- 技术+管理(人,资源,技术)
核心需求
- 分布式、高并发、高性能、高可用、可扩展、松耦合、高内聚、可复用、边界、安全、成本、规模等等
- 服务、缓存、消息、搜索、调度、任务、数据、监控、配置、网关等等
- Paxos、CAP、BASE、ACID、raft、rpc、Reactor、SLA、SLB等等
关键词汇
- 缓冲 Buffer:解决上下游速度不匹配的问题,消息队列、批处理都属于 Buffer
- 缓存 Cache:解决 I/O 性能问题,在内存中存储热点数据,提升慢速磁盘 I/O 和程序使用的过程,PageCache、内存到 CPU 中的三级缓存、Redis、本地缓存等都属于 Cache
- 复用 Pool:降低复杂度,提升性能,连接池、线程池、内存池、对象池都属于 Pool
- 分治 Sharding:分而治之,单机、集群都适用,降低时间复杂度
- 亲密(粘性)sticky:让某一个线程亲密到某一颗 CPU上,将相同 id 的商品路由到一台机器上,或者是将相同 ip 地址/相同 session 在负载均衡时负载到一台机器上,这样可以减少资源的重复分配,ThreadLocal、数据路由等都属于 sticky
- 权衡 Balance or trade-off:技术选型,在技术之间做一个均衡
喝啤酒理论:假设你住在24层,在1层有12瓶啤酒,现在你想喝啤酒,但是有一个要求,你必须把啤酒从1层带到24层去喝,你可以有两种选择:一种是每次拿1瓶回去喝,另一种是拿个箱子把12瓶酒全部装回去喝。很显然,第二种方式是更优的,它相比第一种方式,减少了来回跑动所付出的代价。这种理论实际上就体现了缓冲的概念。
技术词汇:
- QPS:Queries Per Second(2/8 定理:0.8并发量/0.2天秒)
- TPS:Transactions Per Second
- RT:Response-time
- PV:Page View
- UV:Unique Visitor
- 并发数:同时访问服务器站点的连接数
- 线程数:((挂起时间+运行时间)/ 运行时间 )* CPU 2倍(状态(挂起,运行)->时间)
各种中间件的性能:https://help.aliyun.com/
书籍推荐
1、大型网站技术架构:核心原理与案例分析
2、分布式服务框架原理与实践
3、互联网创业核心技术:构建可伸缩的web应用
4、高扩展性网站的50条原则
5、架构即未来:现代企业可扩展的Web架构、流程和组织
6、系统架构:复杂系统的产品设计与开发
7、Java性能优化权威指南
8、大规模分布式存储系统:原理解析与架构实战
9、大规模分布式系统架构与设计实战
10、企业IT架构转型之道:阿里巴巴中台战略思想与架构实战
11、尽在双11:阿里巴巴技术演进与超越
12、大型网站系统与Java中间件实践
13、架构探险—从零开始写Java Web框架
14、架构探险:从零开始写分布式服务框架
15、软件架构师的12项修炼
16、Web信息架构设计大型网站
17、深入分析Java Web技术内幕(修订版)
18、实用负载均衡技术:网站性能优化攻略
19、ZeroC Ice权威指南
20、架构之美
从过去到未来
- 从web server到web container
- Servlet从NIO到WebSocket
- 同步到异步
AFK拆分原则
- 前后端分离原则
- 服务无状态原则
- 通信无状态原则