前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >系统架构设计的一点思考

系统架构设计的一点思考

作者头像
月牙寂道长
发布2020-05-09 17:27:56
9050
发布2020-05-09 17:27:56
举报
文章被收录于专栏:月牙寂

系统化思维在以前的文章中,有提到过很多。总结为三个方面。

1、系统三要素:元素、元素之间的关系、元素功能。

2、宏观与微观

3、系统动力学

以上三点是我在2020年之前,在对系统化思维的一个认识。以及将这三点运用到软件系统架构中的思考。

简单过一遍:

在软件系统架构的设计中。运用系统化思维的三大特色,可以有这么一种设计方法:

元素层:每个元素都是原子、独立性的。只做着单一职能。体现的是系统化思维中的三要素中二个功能,元素以及元素功能。

关系层:体现的是,多元素之间的关系,外加关系管理职能。体现的是系统化思维中的三要中二个功能,元素之间的关系。

业务层:业务层,参与了多元素,多元素之间关系的逻辑流程以及状态处理。

业务展示层:链接业务层,并将其适配各种终端。

这是一个极其简单的利用系统化思维的三要素进行架构设计的方法。

再将系统范围扩大、或者复杂度提升。那么有两个角度可以去思考。

1、每一个元素,又可以由一个系统构成。

2、几个领域内的元素或系统构成一个独立系统,我们可以将其称为领域。

那么现在来分析下,这样的架构存在的一些性质:

复杂度

这里面有两个特性:

1、系统架构越往下,其稳定性要求就越高,这里的稳定性是指,元素特性、功能稳定固化。

2、系统架构越往上,其灵活性要求就越高,这里的灵活性是指,需求的多变、快速响应。

可以看到架构图中,从微观到宏观的角度,可以理解为,业务层的展现,其实就是由底层元素,多元素之间相互合作等形成的。

若我们在系统架构中,将元素进行改变:(增加属性、改变某个属性),其产生的复杂度是由下往上传递的。

底层元素的改变,往上一层一层的传递,其复杂的影响将是一个乘数的改变。

那么如何保证业务层的灵活性呢,灵活性可以由元素的组合,逻辑流程的多少来保证。当然,在多变的需求下,可以增加一些元素,增加的元素,可以更加的为上层提供多样性,也就是灵活性。

还有一种常见的架构

1、中间层,是一个抽象的固定层,可以理解为固定流程、固定接口层,承接的是上下两层

2、上层,对接的是一个业务方

3、下层,对接的是另一个业务方

这里就又牵涉到另外一个词叫抽象

抽象

抽象的结果是什么?抽象的结果就是,固化、稳定。不管是流程的固化,稳定。还是功能、属性的固化和稳定。都是抽象带来的好处。

具象

相对比抽象的词便是具象,具象的代表的是具体实例,不同的实例应该都有不用的特性。这就具备了,抽象的一部分,又具备了一个部分的个性。

什么地方,什么层,采用抽象(固化、稳定),什么地方,什么层采用灵活。

根本在于整个系统的需求,或者理解为整个产品的需求。

分析系统、产品需求,其中抽象在哪里?具象又在哪里?

以上架构层的设计,已经足以涵盖当下,绝大多数的软件系统架构设计。

但其是不是存在问题?问题是没有的,但是有复杂度问题没有解决。

哪来的复杂度?

虽然有做分层,也有说到稳定与灵活的两个属性。

但元素多,关系多,业务流程多,反应到系统层面来讲,就是整个系统的复杂度的提升。

在以往的解决方案中,有利用到领域,将大系统划分为领域。或者将一些领域干脆抽象成中台(其实,大多数情况下,一个xx中台,可以将其归结为某一个领域)

总结为在现有的架构下,从两个方向去解决:

1、减少元素,元素少了是不是复杂度就少了?

2、减少元素之间的联系。

领域的方案,其实就是采用了这种方式去将复杂度降低。

但本质上来说,并未解决系统的复杂度问题,只是做到了减少复杂度。

这个问题其实,一直都困扰着我。

幸运的是,其实在很多其他地方,早就已经有了解决方案。

可以见我的文章 从网络演进看微服务演进

分布式与集中式

集中式与分布式

其两者的优点各不相同:

分布式:天然的与元素对应,其属性天然与功能固定、单一对应

集中式:天然的与业务逻辑、业务状态对应。

两者的处理优势非常的突出与明显。

这种模式在计算机领域里有很多的体现。

1、操作系统:对于操作系统来说,进程抽象成固定的,单一的行为。在用户层,有很多的进程。在中间层(接口层)所有的进程对于操作系统来说,展现的是固定化的一面。操作系统来说,其管理这些进程,是一个集中式的管理。

进程的流程与状态也都是固定化有限状态机。

2、k8s的调度:对于k8s来说,所有的任务抽象固定化成pod。而所有的pod对于k8s来说也都是固定化的。

这里面体现的两个方面:

固定化部分:通过抽象功能或属性。元素状态的有限状态的固定。

有了固定化部分,那么对于集中式管理来说,其只需要做的就是调度。

在文章 从网络演进看微服务演进 讲到的是另外部分,网络。

其中也体现了集中式与分布式的优势结合。

那么利用集中式与分布式的特性。

我预测下一代的系统架构,包括中台的的发展方向为:

在现有的系统架构中,将复杂的逻辑流程、状态管理,上升到业务层,做成编排管理。将元素层的逻辑链接完全去除。

这里面的好处在于:

1、利用集中式的管理方式,将实现集中式的统一管理,与元素的单一固定化功能。并去除掉元素之间的复杂状态和链接。

2、利用流程的定制化编排,实现业务流程的灵活性。将灵活性完全上升到业务层。

3、在一些固化的流程,可以输出一些通用性的通用方案。实现业务方一键接入。

最后:对于系统架构的认识,我认为,越来越应该上升到脱离计算机(语言,操作系统等)的束缚,放开思维。

以上只是简单的记录了下,自己的一些思考。由于篇幅,以及写作的仓促,并未有太多的详细描述。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/05/06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档