龙空技术网

如何做软件架构的设计

南京路老R 214

前言:

眼前朋友们对“c语言架构”都比较着重,我们都需要知道一些“c语言架构”的相关知识。那么小编也在网摘上收集了一些对于“c语言架构””的相关文章,希望兄弟们能喜欢,咱们一起来学习一下吧!

#头条创作挑战赛#

写在前面,之前老R发过志愿不要再选计算机的文章,有不少人私信老R请教相关问题,今天老R把怎么设计好一个系统的架构给大家讲讲,希望大家一起来探讨

1、架构是什么,大家首先要知道什么是架构

企业架构:是将企业作为关注主体,分为描述其业务活动的业务架构和为其业务活动提供支持的IT架构。

软件架构:关注的是软件系统,软件系统的“基础结构”,创造这些基础结构的准则,以及对这些结构的描述

系统架构:由于“系统”这个词范围很广,所以不但包含了上述三种架构,还有更广泛的外延,比如生物体、人类社会等现实存在的各种事物都有其葭袄阿隘碍敖耙(憋疤俺埃哎翱挨百哀埃挨涧毕爱碍蚌芭篡边磅艾懊寅捌岸爱唉吧唉癌熬埃蓖光甭啊唉啊搬编癌按渡巴敖闭埃暗碍敖笨炳壁金挨梆捌阿安白爱嘴鞍羊盹潦鹰钝贯枷鄙迟隧架包丛败柯件系统,可以等同软件架构。

产品架构:所谓产品架构,就是以产品的商业需求和用户需求为关注对象,对产品的功能模块和模块之间的关系的描述。

解决方案架构:在项目级别称为解决方案架构,可以看作是解决某项问题的主要工作脉络比如主要的工作步骤、各个环节动用的主要资源和采用的技术方法等。

架构的一些其他概念,什么组件、模式、模型等等老R不在这里详细说明了,有疑问的可以私信老R

2、企业架构

说企业价格就必然要说到 ArchiMate模型语言,由于篇幅的原因,老R就不在这里细说了。

3、企业架构设计方法

业务架构

是把企业的业务战略转化为日常运作的渠道,业务战略决定业务架构,它包括业务的运营模式、流程体系、组织结构、地域分布等内容。

IT架构

指导 IT 投资和设计决策的 IT 框架,是建立企业信息系统的综合蓝图,包括数据架构、应用架构和技术架构三部分。

4、软件架构的发展趋势

单体——分布式——微服务——serverless

这里重点说下分层架构模式、事情驱动架构模式、微核架构模式

分层架构(layered architecture)是最常见的软件架构,也是事实上的标准架构。如果你不知道要用什么架构,那就用它。这种架构将软件分成若千个水平层,每一层都有清晰的角色和分工,不需要知道其他层的细节。层与层之间通过接口通信。虽然没有明确约定,软件一定要分成多少层,但是四层的结构最常见。

事情驱动架构模式

微核架构(microkernelarchitecture) 又称为"插件架构”(plug-in architecture)指的是软件的内核相对较小,主要功能和业务逻辑都通过插件实现。内核 (core) 通常只包含系统运行的最小功能。插件则是互相独立的,插件之间的通信,应该减少到最低,避免出现互相依赖的问题。

关于建模什么UML语言、C4模型等不细讲,下面重点讲下我们经常用到的DDD架构

我们先来分析一下软件架构模式演进的三个阶段。

第一阶段是单机架构:采用面向过程的设计方法,系统包括客户端 UI 层和数据库两层,采用C/S 架构模式,整个系统围绕数据库驱动设计和开发,并且总是从设计数据库和字段开始。

第二阶段是集中式架构:采用面向对象的设计方法,系统包括业务接入层、业务逻辑层和数据库层,采用经典的三层架构,也有部分应用采用传统的 SOA 架构。这种架构容易使系统变得臃肿,可扩展性和弹性伸缩性差。

第三阶段是分布式微服务架构:随着微服务架构理念的提出,集中式架构正向分布式微服务架构演进微服务架构可以很好地实现应用之间的解耦,解决单体应用扩展性和弹性伸缩能力不足的问题。

微服务和拆分的困境

那进入微服务架构时代以后,微服务确实也解决了原来采用集中式架构的单体应用的很多问题,比如扩展性、弹性伸缩能力、小规模团队的敏捷开发等等。

但在看到这些好处的同时,微服务实践过程中也产生了不少的争论和疑惑:微服务的粒度应该多大呀?微服务到底应该如何拆分和设计呢?微服务的边界应该在哪里?

可以说,很久以来都没有一套系统的理论和方法可以指导微服务的拆分,包括微服务架构模式的提出者 Martin Fowler 在提出微服务架构的时候,也没有告诉我们究竟应该如何拆分微服务。

这两年,你在技术圈中一定听说过一些项目因为前期微服务拆分过度,导致项目复杂度过高,无法上线和运维。

综合来看,微服务拆分困境产生的根本原因就是不知道业务或者微服务的边界到底在什么地方。换句话说,确定了业务边界和应用边界,这个困境也就迎刃而解

DDD 是一种处理高度复杂领域的设计思想,它试图分离技术实现的复杂性,并围绕业务概念构建领域模型来控制业务的复杂性,以解决软件难以理解,难以演进的问题。DDD 不是架构,而是一种架构设计方法论,它通过边界划分将复杂业务领域简单化,帮我们设计出清晰的领域和应用边界,可以很容易地实现架构演进

领域的相关概念就不讲了,太枯燥了下面讲一个DDD架构设计-例子

当然还有一个分布式现在用的也很多,主要就是CAP的理解和单元化的问题不细节,有疑问可以私信老R

后面老R将不定期发表一些关于软件开发设计方面的相关问题,希望大家多多关注

标签: #c语言架构