1.什么是架构?
架构(Architecture)一词来源于建筑领域,其本身就是建筑的意思,也有体系结构的意思。
也有解释称:规划,设计和建造建筑物的过程的产物。
(个人理解:架构是一种设计理念,相当于为创建制定方向)
- 架构有哪些概念?
想要了解架构,就得了解结构由哪些相关的概念!!!
- 模式(Pattern)
提到模式我们大家第一想法可能是基于面向对象的23种基本设计模式,那么什么是模式?为什么用到模式?模式是一种对普遍问题的普遍解决方案,把一类问题的共性所提取,来用同样的方法来解决这个问题。
- 类库(Library)
什么是类库?对于这个概念,我一开始也不太明白,翻阅资料之后,我的理解是可复用功能,和可复用工具的集合,比如我们的maven仓库里面的jar包。
- 框架(Framework)
提到框架,我觉得对每一个开发者来说都使用过,在前辈的汗水下,所设计出来的框架,为我们后辈所熟知并使用,例如SSM,SSH,JDK。
- 模块(Module)
模块还是比较好理解的,就举电商网站来说明吧,电商网站分为很多模块,用户模块,商品模块,管理员模块等等,模块是业务或系统按照特定维度的一种切分,也可以看作各种功能按照某种分类聚合的一种形式。
- 组件(Component)
提到组件的话我觉得可能有过Vue使用经验的人很能理解,组件是一组可以复用的业务功能的集合,包含一些对象和其行为,比如日志组件,权限组件。
- 服务(Service)
服务可能在我看来算是最重要的点,从之前的面向服务编程,到现在微服务架构,都和服务离不开关系,那么服务究竟是什么?我觉得,服务是一种对外提供业务处理能力的功能,服务需要使用明确的接口方式。
- 平台(Platform)
平台这个概念就是所有可能做的事的集合。
微服务的九个目标
高性能
高性能保证系统必须满足预期的性能目标,在并发用户数,并发事务数,吞吐量和延迟等指标方面达到预估值,支撑目标人群的正常使用。
可靠性
可靠性主要体现在业务数据和流程一致性上,必须可靠!!!
稳定性
软件系统必须保证在用户的使用周期内长期稳定运行,需要有一定的容错能力。
可用性
关于可用性,我觉得非常中要,高可用是当前非常火的一个概念,简单来讲,有点像MySQL里面的主从复制,但两者之间的差别特别大,有用过Docker的里面有个哨兵模式,两者结合一下,我觉得就是高可用,也就是说高可用是指在制定时间内提供服务能力的概率值。(后期我会出一个专题讲高可用,以及分布式组件上的高可用)
安全性
用户的业务数据是很重要的,这就保证我们要做到保障其安全,这也是一个重要目标。
灵活性
软件系统应该具备不同特点的用户群和目标市场的能力。
易用性
软件系统必须拥有较好的用户体验,方便用户使用。
可扩展性
业务和技术都在不断发展变化,软件系统需要随时根据变化来做到动态扩展。
可维护性
软件系统的维护包括修复现有的错误,以及将新的需求和改进添加到已有系统。
(本人参考文献:高可用可伸缩微服务架构)