Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >我的系统设计之道

我的系统设计之道

作者头像
月牙寂道长
修改于 2018-04-03 03:32:05
修改于 2018-04-03 03:32:05
6040
举报
文章被收录于专栏:月牙寂月牙寂

说明:此文章为腾讯云机器自动从本人csdn博客搬迁过来。是本人授权操作。

申明:无本人授权,不可转载本文。如有转载,本人保留追究其法律责任的权利。

龚浩华,QQ 29185807,月牙寂 道长

第一时间获取文章,可以关注本人公众号 月牙寂道长 yueyajidaozhang

道家说,道法自然,顺其自然。任何事物,都有着自身的法则(规律),要充分的理解事物的法则(规律)后,顺应这个法则(规律),则会事半功倍。 现代科学,从牛顿经典力学说起。牛顿的经典力学,则是属于对法则的一个抽象模式。顺应,利用这个法则,近代科学发展起着重要作用。 但牛顿经典力学,在解决经典力学的方面是适用的。在量子层面,以及相对论层面,则是不试用的。 模式,何为模式。模式(Pattern)其实就是解决某一类问题的方法论。把解决某类问题的方法总结归纳到理论高度,那就是模式。 这也就是所谓的,适合才是最好的。 那么从这里开始延伸,在程序设计的时候,有经典的23种设计模式,这些设计模式,对应相应的场景。可以解决相对应的程序设计问题。 那这些设计模式之上,是不是可以再抽象出一种模式,暂称为模式之模式。 起初,利用简单的设计模式,如经典的单例模式,工厂模式等23设计模式,来进行程序设计,这时,只是简单的接受前人总结的模式。缺点,模式有限。 仔细思考,其实发现,这23种设计模式,全部能够对应到现实生活。就如最简单的工厂模式,这个和现实生活中的是一样的。 是否可以摆脱23设计模式的限制?是否可以转变思想,先模拟现实模式,再来程序设计? 答案是肯定的。将需求转变成现实模式,真正实现程序是对现实生活的模拟,然后再来实现程序。 这里的设计,包括程序设计,架构设计。都是可以用此方案来实现。 经过对现实具象化的模拟,实现了设计思想的转变。但如何落地呢? 在程序设计中,最熟悉的莫过于,面向对象编程。在架构设计上,目前最火热的,莫过于微服务。 那么从这两方面,我们就可以将现实具象化实现。但其中的面向对象,对现实的模拟还缺乏很多支撑。那么面向智能体编程Aop(Agent Oriented Programming)则可以完美实现现实具象化设计。 以上的系统,还属于简单系统。如设计模式中的工厂模式,角色划分简单,功能简单,角色数量少,交互少。但当前IT界的发展,系统越来越复杂,特别是微服务数量一多,则其造成的系统复杂性就会非常高。 那么简单的从辩证角度来看,有种整体与局部的辩证方式,可以解决此种问题。 假如我们有20个微服务,如果20个微服务之间,进行通信,那么会形成一个蜘蛛网一样的网络。我们将20个微服务,化分为不同的领域,假如我们划分为5个领域,领域组成大的微服务,那么组织间的网络将得到极大的简化。 那么各个领域之下,其内部又包含几个小的微服务,其之间有着自身的网络通信。 这种整体与部分的辩证,也可以用到程序设计中。目前go语言结合aop设计,可以实现角色划分。并通过领域划分,划分为不同的领域,在不同的领域里包含不同的aop。不同的领域又组成大的程序。 从整理和局部的辩证来做一些优化,只是做了一些系统的简化处理。但依旧不能解决系统复杂度越来越大的情形。 这个情形与近代科学发展是一致的。近代科学都是以简单系统研究为主,所出现的理论都是简单的模式。近几十年,复杂系统的概念将科学发展引到新的层面。 那么我个人的思考形成过程。 从简单的行为,到群体的行为关注。 有简单的种群行为分析,如生物种群模型,利用微分方程来建模。最经典的就是捕鱼业的持续收货,这个只是简单的种群模型,再复杂一点有,狼图腾中的草原、黄羊、狼,三者的种群数量的自动调整。 这里的是简单的种群互相影响的行为。再复杂一点,还有群体智能模型。如一些群体智能算法,遗传算法,粒子群算法,蚁群算法等等,但这些知识简单的算法。如利用到程序设计角度来看。利用的则是两个东西,正反馈和负反馈。通过激励与惩罚机制,形成群体的一个智能。但这个需要个体到达一定的数量,形成群体。 那么把系统资源具象成环境资源,将个体具象成黄羊、狼、蚂蚁、蜜蜂等个人。整个系统便具象成了一个生态系统。 这方面的研究还有很多,比较符合IT行业的,有元胞自动机、协同学。而其中的协同学、耗散系统、超循环系统被统称为新三论。也正是自组织理论。这三者的研究,可以给复杂系统的设计,提供一些理论支撑。 当前的复杂适应系统模型说的,复杂的行为并非出自复杂的基本结构, 极为有趣的复杂行为是从极为简单的元素群中涌现出来的。生物体在共同进化过程中既合作又竞争, 从而形成了协调精密的生态系统; 原子通过形成相互间的化学键而寻找最小的能量形式, 从而形成分子这个众所周知的涌现结构; 人类通过相互间的买卖和贸易来满足自己的物质需要, 从而创建了市场这个无处不见的涌现结构。 从这段话来体现,IT系统以后越来越复杂,是否也是可以通过构建简单的个体模块,通过一系列的,激励与惩罚,实现系统的自足自,让其涌现出系统智能? 我个人认为,系统的演进,应该是殊途同归的。也是道家所说道法归一。IT系统的发展,势必会像着自组织系统发展。当前就是简单系统向复杂系统演变的奇点。把握方向,便是把握未来。 很多东西在头脑中,便于篇幅的原因,很多都是简单的提下。有兴趣的话,可以联系,互相学习。

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
《Spring Boot极简教程》附录2 编程的本质N小结
尼古拉斯·沃斯(Niklaus Wirth,1934年2月15日—),生於于瑞士温特图尔,是瑞士计算机科学家。Pascal语言之父。
一个会写诗的程序员
2018/08/20
4950
Golang分布式设计模式之-----分层设计
第一时间获取文章,可以关注本人公众号 月牙寂道长 yueyajidaozhang      
月牙寂道长
2018/03/06
1.2K0
DDD究竟是个啥?怎么落地?
领域驱动设计(Domain Driven Design,以下简称DDD)这个话题,经常会出现在各大技术圈。特别是微服务出现后,海内外的大佬们又把微服务和DDD放到了一起说事情。
ImportSource
2018/07/25
1.3K0
DDD究竟是个啥?怎么落地?
股价技术分析有了系统的数学理论基础
点击标题下「大数据文摘」可快捷关注 作者:赵亚赟,财富中文网撰稿人,现为中国人民大学重阳金融研究院金融投资项目主管,具有多年证券从业经验。著有《金融战》一书。 分形是新的数学学说,对研究随机性较大、不规则的真实事务有着跨越式的发展。股价的变化非常符合分形学说。分形数学的创始人也确实对股市做过研究,经过很多人的后续研究,分形已经可以为技术分析,特别是图形组合,提供数学基础。如果与基本面分析和均线等其他技术分析结合起来,会给投资者一条全新的分析方法 传统欧氏几何习惯对复杂的研究对象进行简化和抽象,虽然这种方法对
大数据文摘
2018/05/22
9290
【工具】技术分析有系统的数学理论基础
传统欧氏几何习惯对复杂的研究对象进行简化和抽象,虽然这种方法对科学发展起了重要的作用,但事实上很多人都发现身边大部分现象都是非线性不可逆的,随机性非常强,比如天气、股票价格变化等。对于这些现象,经典力学、量子力学、相对论都束手无策。随着科学的发展,混沌、分形、协同学等新的理论逐步出现,计算机技术的飞跃大大促进了这些非线性科学的发展。 分形(fractal)是由IBM的研究员兼哈佛大学教授Mandelbrot提出的。他发现在地图上,海岸线是相对平直的,从飞机上俯视海岸线,却看不到那些规则的光滑曲线,而代以
小莹莹
2018/04/19
8860
【工具】技术分析有系统的数学理论基础
程序员架构修炼之道:如何设计出可持续演进的系统架构?
现代商业中需求不断变化是必然的,这就需要我们设计出一种可以应对这种变化的系统架构——当无法预测变化时,该架构仍然可以朝着正确的方向发展。这个架构是团队成员不断努力的结果,是一个与开发工作紧密结合的过程,它能同时响应不断变化的需求和开发人员的反馈——我们称之为“演进式架构”,它以敏捷的方式拥抱变化。驱动敏捷软件方法论的引擎是内置的反馈环,如测试、持续集成和迭代等。
一个会写诗的程序员
2022/09/19
9670
程序员架构修炼之道:如何设计出可持续演进的系统架构?
程序员的外功和内功的修炼
第一时间获取文章,可以关注本人公众号 月牙寂道长 yueyajidaozhang
月牙寂道长
2018/03/06
1.1K0
了解不同架构思维,赏析架构之美
系统架构(System Architecture),软件架构(Soft Architecture)是 IT 领域常见的名词,架构设计是软件系统构建过程中极其关键的一部分。
码哥字节
2020/08/31
1K0
本人公众号文章目录
以太坊源码分析---go-ethereum之MPT(Merkle-Patricia Trie)
月牙寂道长
2018/12/14
1.1K0
本人公众号文章目录
信息科学技术与创新之“知识升华”
        前三章让我从三个世界开始学习,并且逐渐从最初认识到物理世界,生物世界与数字世界的概念与关系,他们之间互相结合的作用与效果。到对于数据的进一步探索与应用,尤其是科学数据三个法则的介绍,让我认识到逐渐发展并形成的数据化的趋势。而以数据交换为媒介的信息产业的发展,引出了关于信息的结构、含义与效用的进一步讨论与探索。此外,通过学习,我还通过现实例子二维码的分析,以实际和理论相结合的方式,对信息的编码与其意义有了更深一步的认知。最后还对数据与信息的关系进行了梳理和举例。然而,不可否认的是以数据为驱动的新一代信息革命快速引领着知识的生产与传播。知识在世界的发展中总是有着不可忽视的重要地位。那么知识的定义、形式到底是什么?获取知识的渠道又有哪些?如何判断知识的是非和对错?以及如何平衡知识专业化和综合化的矛盾?第四次章《知识升华》为我解答了这些疑惑。
timerring
2022/07/20
4750
信息科学技术与创新之“知识升华”
一周技术思考(第32期)-为什么有了系统设计还要进行组织设计
大家好,这里记录,我每周读到的技术书籍、专栏、文章以及遇到的工作上的技术经历的思考,不见得都对,但开始思考总是好的。
王新栋
2021/10/09
4310
一周技术思考(第32期)-为什么有了系统设计还要进行组织设计
浅谈面向对象的那些形而上
本文主要聊一聊笔者对软件工程、系统设计、OOA/OOD/OOP、面向对象设计原则、设计模式等概念的简单理解。这些都是高度抽象化,同时又很重要的概念。笔者仅是一个毕业工作五年的研究生,必然存在较大的认知局限。文中同时也借用了许多专家的精彩段落来帮助笔者阐述,引用会贴在段末。
章鱼carl
2022/03/31
4210
设计模式:软件设计模式与系统架构设计模式的区别与联系
在软件开发领域,经常会听到“设计模式”和“架构模式”这两个术语。尽管这两个术语听起来类似,但它们实际上指的是两种不同的概念。本文旨在明确这两个术语的定义、区别和联系,帮助开发人员和架构师更好地理解和应用这些概念。
运维开发王义杰
2023/12/12
6030
设计模式:软件设计模式与系统架构设计模式的区别与联系
为什么DDD是设计微服务的最佳实践
在本人的前一篇文章《不要把微服务做成小单体》中,现在很多的微服务开发团队在设计和实现微服务的时候觉得只要把原来的单体拆小,就是微服务了。但是这不一定是正确的微服务,可能只是一个拆小的小单体。这篇文章让我们从这个话题继续,先看看为什么拆出来的是小单体。
rocket
2018/10/15
1.7K0
常见系统体系架构设计模式-云原生架构设计快速入门
架构模式是具有某些共同特征的一系列可以被重复应用的架构实践总结归纳结果。 比如,N 层就是一个常见的体系结构模式。 最近以来,流行的微服务架构也是一种模式。 体系结构风格不依据使用特定的技术,但某些技术非常适合某些特定的体系结构。 例如,容器原生就能适应微服务。后续的文章我将介绍应用程序中常用的体系结构模式。 有关每个模式的文章包括:
jack.yang
2025/04/05
1550
大型复杂系统的架构设计思考
架构设计存在两类系统的设计:大型系统和简单系统的架构设计。如何进行简单系统(单系统)设计我们看到的文章很多,大型系统设计相对较少。如何进行大型系统设计?是我们今天讨论的话题。
架构之家
2022/07/12
8220
大型复杂系统的架构设计思考
设计模式系列(开篇):啥是设计模式?
前端时间,花了一段时间去整理并开发了一个用于刷面试题的小程序《面试手册》;整理各种资料,耗费了比较多的时间,虽然还有更多的资料需要整理,决定暂时换个方式,缓解缓解,来整理一下设计模式系列。
一行Java
2022/04/07
3570
设计模式系列(开篇):啥是设计模式?
电商系统中微服务体系中的分层设计和领域划分
看标题感觉这个东西很理论,比起“高并发、多线程”、“分布式CAP、一致性、Paxos”、“高可用SLA”等具体的干货技术点,软件体系知识显得很“湿”,似乎人人都有自己的认识,但又很少有人能说完整,有一点可以确定的是,如果你未来需要独立设计一个复杂的系统中台,并使之未来能快速应对各种需求变化的话,科学合理的领域划分和边界界定需要我们“处女座级”的坚持下去,这对防止人力失控、减少项目烂尾很有帮助。合理的界定了边界后,即便某个微服务很糟糕,也可以就输入输出以很少的人力投入进行重构,相反的就是牵一发而动全身,加上业务需求频繁而来,很容易烂尾或是达不到如期的效果。
架构之家
2022/07/12
5470
电商系统中微服务体系中的分层设计和领域划分
系统架构设计的一点思考
以上三点是我在2020年之前,在对系统化思维的一个认识。以及将这三点运用到软件系统架构中的思考。
月牙寂道长
2020/05/09
9320
系统架构设计的一点思考
架构设计 - 软件开发的基础与成功之道
文章链接:https://cloud.tencent.com/developer/article/2473682
连连LL
2024/12/04
1430
架构设计 - 软件开发的基础与成功之道
推荐阅读
相关推荐
《Spring Boot极简教程》附录2 编程的本质N小结
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档