Go语言-架构 | 青训营笔记

58 阅读2分钟

这是我参与「第五届青训营 」笔记创作活动的第 5 天

前言

本文主要介绍:

什么是架构,从定义、问题、单机、单体、垂直应用|垂直切分、SOA、微服务|水平切分分析

什么是架构–定义

架构,又称软件架构,

是有关软件整体结构与组件的抽象描述·

用于指导软件系统各个方面的设计

Q:定义还是太抽象,能不能再通俗一点?

实现一个软件有很多种方法,架构在方法选择上起着至关重要的指导作用

Q:架构的重要性?

地基没打好,大厦容易倒

地基坚实了,大厦才能盖得高

站在巨人肩膀上,才能看得远

什么是架构-问题

兰师傅蛋糕坊要开张了,亟须解决如下问题:

如何做蛋糕

独家秘方,还是亲自做比较好﹒如何卖蛋糕

刚开始客流量应该不大,边做边卖

看起来问题都解决了,开张!

什么是架构-单机

软件系统需要具备对外提供服务,单机,就是把所有功能都实现在一个进程里,并部署在一台机器上

  • 优点:简单

  • 问题:运维需要停服

演进:如何卖更多的蛋糕?

多雇几个蛋糕师傅

什么是架构–单体、垂直应用|垂直切分

单体架构:分布式部署

垂直应用架构:按S用世 P单体

  • 优点:水平扩容、运维不需要停服

  • 问题:职责太多,开发效率不高;爆炸半径大

演进:如何提高做蛋糕效率?

分工协作

什么是架构-SOA、微服务|水平切分

SOA(Service-Oriented Architecture)

1.将应用的不同功能单元抽象为服务

2.定义服务之间的通信标准

微服务架构:SOA的去中心化演进方向

  • 问题:

数据一致性

- 装货台共交付了多少蛋糕?

高可用

- 这么多师傅,如何合作?

治理

- 烤箱坏了,怎么容灾?

解耦vs过微

- 运维成本高了,值当么?