这是我参与「第三届青训营 -后端场」笔记创作活动的的第5篇笔记。
01 什么是架构-定义 架构又称软件架构,是有关软件整体结构与组件的抽象描述 用于指导软件系统各个方面的设计。
1.2 单机架构 软件系统需要具备对外提供服务,单机,就是把所有功能都实现在一个进程里,并部署在一台机器上。 优点: 简单 问题: C10K 问题 运维需要停服
演进: 从单机到单体: 单机是部署在一个机器上,单体是把相同的这么一套软件部署到多个机器上,这样相对于水平扩容(只不过不是咱们微服务的容器水平扩容。。是机器直接水平扩容,当然这是定死的 装好了就一直跑了)
在蛋糕店就是多雇佣几个师傅,这样有一个师傅有事 其他师傅也能正常生产蛋糕。
(某个服务器挂了 其他服务器可以顶上)
高可用了属于是。。。
大堂经理就相当于是负载均衡器
关于垂直切分: 分工 每个师傅只做自己的一部分就够了,不需要知道整个秘方 关于水平切分: 有多个不同的师傅做相同的工作,如果有一个师傅生病请假了,其他的师傅可以替代他的工作,不会导致整个生产蛋糕的环境出问题。
关于SOA:
关于微服务: 微服务架构就是SOA架构的去中心的演进方向,SOA架构里面有一个中心化的通信,比如这个”兰师傅蛋糕店沟通技巧“ 这里在流量大的时候会成为系统瓶颈。
而微服务架构 各个服务之间是各自负责自己和其他服务的通信的 没有中间这个通信单点。 (有点像k8s里的apiserver 微服务架构下,各个服务之间通信是不需要过这个apiserver的)
SOA 这里必须经过“兰师傅的蛋糕店沟通技巧”,所有的服务都需要经过这个沟通技巧 才能和其他的服务进行沟通,这里会成为一个单点瓶颈,设计起来就比较麻烦,性能要求很高。
而微服务架构,各个服务组件之间是并联的,没有中心单点,大家是各自交互。
微服务这里后端拆分的更细微,服务的数量也变多了。