![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
架构
文章平均质量分 72
txxs
这个作者很懒,什么都没留下…
展开
-
洞察设计模式的底层逻辑
引用自:洞察设计模式的底层逻辑找到变化,封装变化。https://mp.weixin.qq.com/s/qRjn_4xZdmuUPQFoWMBQ4Q设计模式是开发同学经常聊到的话题,也经常被用到实际的开发项目中,熟练的人可以做到信手拈来,不熟悉的人陷入苦思冥想中。笔者认为,不仅仅要掌握设计模式的用法,更要洞察设计模式的底层逻辑,只有那样,才能做到遇到实际的问题可以使用合适的设计模式去解决。一 你应该关注底层逻辑1 设计模式的段子段子一:你让他给你讲设计模式,他给你讲故事,..转载 2021-12-20 10:52:22 · 222 阅读 · 0 评论 -
领域驱动完整方法流程
基本概念一文搞懂DDD_maoyeqiu的专栏-CSDN博客领域驱动设计DDD概念_maoyeqiu的专栏-CSDN博客防腐层_maoyeqiu的专栏-CSDN博客_防腐层建模方法领域建模的方法_maoyeqiu的专栏-CSDN博客领域驱动设计(DDD)架构整理(分层架构、六边形架构、SOA架构、REST、CRQS、事件驱动架构等)_maoyeqiu的专栏-CSDN博客架构师如何应对复杂业务场景?领域建模的实战案例解析_maoyeqiu的专栏-CSDN博客换个思维学领域建模方原创 2021-11-30 10:34:03 · 361 阅读 · 0 评论 -
全链路追踪关键技术-数据上报采样
每个服务内部都有一个采样的队列,被采样的数据会放到采样队列中进行上报,当队列满的情况下多余数据会被 drop。请求数据异步推送到消费队列批量消费,压缩(Gzip)动态调整消费速率(2ms-8s)采样策略默认使用采样存储的方式。默认采样率为 0.01% 或 5次/分钟如果某个环节状态异常(比如 TIMEOUT、EXCEPTION、HTTP_4XX、HTTP_5XX),则会强制采集运行时间大于一定阈值的,则采样。阈值默认 500ms,可以通过配置修改。spanId里以.分隔的数原创 2021-04-26 21:44:33 · 469 阅读 · 0 评论 -
全链路追踪关键技术-traceId的传递
1)同线程传递:当生成traceId的时候,会将相关的上下文id放入本地的TreadLocal变量中,这样就保证了同线程里的id传输。在该线程请求传递结束后一定会把这一次请求的ThreadLocal进行清理。2)网络中传输:如果是RPC请求是在RPC请求协议中添加header字段传递traceId;HTTP请求是在http协议的header中传递traceId;MQ是在消息中添加消息头传递。3)跨线程传递:可以参照下文:在同一个线程内传递比较简单,通过ThreadLocal就能解决上下文传递的问题,原创 2021-04-26 21:23:48 · 8964 阅读 · 1 评论 -
全链路追踪关键技术-Thrift协议Header添加
首先对于远程通信的链路埋点来说,有两个关键信息需要传递,即 traceId 与 spanId(parent spanId)。通信方式目前 链路跟踪框架 只支持 Http 一种。而 Http 利用 header 来传递 trace 信息也十分方便(traceId,spanId)。Client 端采用封装过的 httpClient 或者在 soa 中埋点,均往 header 中塞入了 trace 信息。Server 端采用 spring-web-servlet-filter,本质也就是个拦截器来读取 req原创 2021-04-26 20:29:25 · 1941 阅读 · 0 评论 -
全链路追踪关键技术-HTTP协议Header添加
Filter 中能够获取到的javax.servlet.http.HttpServletRequest暴露的接口,除了从其父接口javax.servlet.ServletRequest接口继承的setCharacterEncoding方法和setAttribute方法之外,没有setter方法。因此 HttpServletRequest类型对象是只读的。我们只能使用装饰器模式,扩展 HttpServletRequest 的一个实现类javax.servlet.http.HttpServletR...原创 2021-04-26 20:28:08 · 520 阅读 · 0 评论 -
全链路追踪关键技术-TraceId生成规则
转自:https://help.aliyun.com/document_detail/151840.htmlTraceId 生成规则SOFATracer 通过 TraceId 来将一个请求在各个服务器上的调用日志串联起来,TraceId 一般由接收请求经过的第一个服务器产生。产生规则是: 服务器 IP + ID 产生的时间 + 自增序列 + 当前进程号 ,比如:0ad1348f1403169275002100356696前 8 位0ad1348f即产生 TraceId 的机器的 I..转载 2021-04-26 19:58:06 · 10022 阅读 · 0 评论 -
全链路追踪关键技术-javaagent
转自:https://www.cnblogs.com/rickiyang/p/11368932.html今天打算写一下 Javaagent,一开始我对它的概念也比较陌生,后来在别人口中听到字节码插桩,bTrace,Arthas后面才逐渐了解到Java还提供了这么个工具。JVM启动前静态Instrument#Javaagent 是什么?Javaagent是java命令的一个参数。参数 javaagent 可以用于指定一个 jar 包,并且对该 java 包有2个要求:这个 jar 包的 .转载 2021-04-26 19:43:10 · 880 阅读 · 0 评论 -
全链路跟踪关键技术-ThreadLocal
应用场景的文章Java 多线程上下文传递在复杂场景下的实践 by vivo互联网技术(海外商城租户区分) 2021-02-01 Spring Security OAuth2.0认证授权五:用户信息扩展到jwt2021-01-14 再谈Token认证,如何快速方便获取用户信息 By 尹吉欢2019-06-11 Spring Cloud中Hystrix 线程隔离导致ThreadLocal数据丢失 By 尹吉欢 2017-12-13 上篇http://cxytiandi.com/blog/det...原创 2021-04-26 19:03:52 · 452 阅读 · 0 评论 -
如何搭建一套服务追踪系统
转自:https://www.freesion.com/article/71841194942/服务追踪系统包含三个部分:埋点数据收集,负责在服务端进行埋点,来收集服务调用的上下文数据。 实时数据处理,负责对收集到的链路信息,按照traceId和spanId。 数据链路展示,把处理后的服务调用数据,按照调用链的形式展示处理。OPENZIPKINOpenZipkin是Twitter开源的服务追踪系统。OpenZipkin主要由四个核心部分组成:Collector:负责收集探针Re转载 2021-04-26 15:50:21 · 360 阅读 · 0 评论 -
Google Dapper学习
1 . 介绍1.1 产生背景以一次网络搜索为例,用户在Google首页输入关键字后只要敲个回车键就能返回搜索结果。但是这样一个简单的请求可能会经过多个子系统的处理,而且这些处理是发生在不同机器甚至是不同集群上的。同时在网络搜索过程中用户对请求延迟敏感度非常高,所以快速定位到是哪个子系统、哪个环节出问题是非常重要的。1.2 Dapper设计目标有两个重要的需求需要予以满足: 全面(ubiquitous deployment):追踪系统的监控对象应该是没有死角的 持.原创 2021-04-26 15:08:19 · 606 阅读 · 0 评论 -
阿里技术专家:一文教你高效画出技术架构图
本文转自:https://mp.weixin.qq.com/s/xczW-IYO_Qpo2GtqEaY22g,请优先查阅原文并关注先前的几篇文章1. 架构风格2. 技术架构3. 什么是架构以及架构分类作者:三画简介:阿里巴巴技术专家,梓敬、鹏升和余乐对此文亦有贡献。三画曾多年从事工作流引擎研发工作,现专注于高并发移动互联网应用的架构和开发。技术传播的价值,不仅仅体现在通过商业化产品和开源项目来缩短我们构建应用的路径。加速业务的上线速率,也体现在优秀工程师的工作效率提升、产品性转载 2021-02-22 10:57:41 · 247 阅读 · 0 评论 -
DDD工厂方法注入的一种方式
每一个值对象有一个工厂方法用于注入所需的服务和数据,这里提供了一种DDD中工厂方法注入服务的方式,值对象有四个组成部分1. 属性:标记业务含义2. 方法:操作值域对象,进行业务操作。3. 工厂:用来注入值对象所需的服务,静态类先初始化空服务,再Autowired实例化服务,这样就可以在对象中使用各种服务,对对象本身进行操作了。比如:人构造完成后就可以生活和工作了。4. 上下文:使用Context来分离数据和服务对象@Getter@Setterpublic class Person e原创 2021-02-08 19:37:50 · 628 阅读 · 0 评论 -
CQRS的一种变体BQRS
CQS(命令和查询分离)由Martin Fowler提出,他认为:“一个方法要么作为一个“命令”执行一个操作,要么作为一次“查询”向调用方返回数据,但两者不能共存”。这里的“命令”可以理解为更新软件状态的写操作,Martin Fowler将此称为“Modifier”;而“查询”即为读操作,是无副作用的。这种分离的好处在于使程序变得更容易推理与维护,由于查询操作不会更新软件状态,在编码时我们将更加有信心。后来,Greg Young在此基础上提出了CQRS(Command Query Resposibi原创 2021-02-03 19:39:01 · 242 阅读 · 0 评论 -
DDD CQRS架构和传统架构的优缺点比较
转自:https://www.cnblogs.com/netfocus/p/5184182.html明天就是大年三十了,今天在家有空,想集中整理一下CQRS架构的特点以及相比传统架构的优缺点分析。先提前祝大家猴年新春快乐、万事如意、身体健康!最近几年,在DDD的领域,我们经常会看到CQRS架构的概念。我个人也写了一个ENode框架,专门用来实现这个架构。CQRS架构本身的思想其实非常简单,就是读写分离。是一个很好理解的思想。就像我们用MySQL数据库的主备,数据写到主,然后查询从备来查,主备数据的同转载 2021-02-02 20:04:30 · 1077 阅读 · 0 评论 -
一文搞懂DDD
最近看了很多和DDD相关的内容,这篇文章对DDD做一个总结,希望可以通过这篇文章不但知道什么是DDD,而且还可以知道如何实施DDD一、什么是DDDDDD(领域驱动设计) 的研究方法与自然科学的研究方法类似。当人们在遇到复杂问题时,通常的做法就是将问题一步一步地细分,再针对细分出来的问题域,逐个深入研究,探索和建立所有子域的知识体系。DDD 是一种处理高度复杂领域的设计思想,它试图分离技术实现的复杂性,并围绕业务概念构建领域模型来控制业务的复杂性,以解决软件难以理解,难以演进的问题。DDD不是架构,而原创 2021-01-21 16:28:29 · 2178 阅读 · 0 评论 -
阿里盒马领域驱动设计实践
转自:https://www.infoq.cn/article/alibaba-freshhema-ddd-practice前言设计是把双刃剑,没有最好的,也没有更好的,而是条条大路到杭州。同时不设计和过度设计都是有问题的,恰到好处的设计才是我们追求的极致。DDD(Domain-Driven Design,领域驱动设计)只是一个流派,谈不上压倒性优势,更不是完美无缺。 我更想跟大家分享的是我们是否关注设计本身,不管什么流派的设计,有设计就是好的。从我看到的代码上来讲,阿里集团内部大部分代码都转载 2020-12-04 20:33:44 · 253 阅读 · 0 评论 -
领域驱动设计(DDD)架构整理(分层架构、六边形架构、SOA架构、REST、CRQS、事件驱动架构等)
转自:https://www.deathearth.com/1246.htmlDDD的一大好处便是它不需要使用特定的结构,由于核心域在限界上下文中,所以我们可以在整个系统中使用多种风格的结构。有些结构保卫者领域模型,能够全局性地影响系统,而有些架构则满足了某些特定的需求。我们的目标是选择适合于自己的结构和结构模式。在选择架构风格和结构模式时,应该将软件质量考虑在内。同时,避免滥用架构风格和架构模式也是重要的。质量驱动的架构选择是种风险驱动方式(我们采用的架构是用来减少失败风险的,而不是增加风险)转载 2020-12-03 11:02:39 · 1763 阅读 · 0 评论 -
理解DDD中的限界上下文,整理自实现领域驱动设计
限界上下文:主要是语言层面上的限界划分,是实现DDD的关键。一个限界上下文并不一定只包含在一个子域中。限的意思就是划分、规定,界就是界限、或者一个边界,上下文就是业务的整个流程。限界上下文定义了领域模型的边界,目的是清理子域,然后区分子域哪些是核心域、支撑子域和通用子域限界上下文是一个显式的边界,领域模型便存在于这个边界之内。创建边界的原因在于,每一个模型概念,包括它的属性和操作,在边界之内都具有特殊的含义。而领域模型需要准确的反映通用语言。在很多情况下,不同模型中存在名字相同或相近的对象,.转载 2020-10-22 14:20:38 · 5269 阅读 · 0 评论 -
DDD中的领域、子域和限界上下文的说明
原文地址:https://www.deathearth.com/1242.html领域领域即是一个组织所做的事情以及其中所包含的一切。每个组织都有它自己的业务范围和做事方式。这个业务范围以及在其中所进行的活动便是领域。当你为某个组织开发软件时,你面对的便是这个组织的领域。这个领域对你来说应该是清晰的,因为你在此工作。领域既可以表示整个业务系统,也可以表示其中的某个核心域或者支撑子域。工作中的子域和限界上下文一个零售商在线销售产品的例子。要在这个领域中开展业务,该零售商必须向买家展转载 2020-10-19 10:44:23 · 2090 阅读 · 0 评论 -
领域驱动设计DDD概念
原文地址:http://qinghua.github.io/ddd/Domain Driven Design(DDD)是Eric Evans于2004在其同名著作里提出的概念,它指明了让软件设计满足理想需求模型的方向。但是建模、设计这种事本来就很抽象,读懂这样的大作也是需要消耗不少脑细胞。本文希望能尽量以简单加实例的方式介绍DDD里的一些常见概念。简介什么是领域《领域驱动设计》书里写的是:用户会把软件程序应用于某个主体区域,这个区域就是软件的领域。简单来说,就认为是公司的某块业务好了。如果领转载 2020-10-19 10:40:35 · 627 阅读 · 2 评论 -
DDD(Domain-Driven Design)领域驱动设计入门说明及示例
原文地址:https://www.deathearth.com/1238.htmlDDD(领域驱动设计)作为一种软件开发方法,它可以帮助我们设计高质量的软件模型。如果你有开发卓越软件的激情和毅力;渴望学习和进步;有能力理解软件模式,并懂得如何应用这些模式;有发掘不同设计方法的能力和耐性;勇于改变现状;着重细节,希望亲自试验;希望编写更好的代码。可以学习并实施DDD领域模型是什么?领域模型是关于某个特定业务领域的软件模型。通常,领域模型通过对象模型来实现,这些对象同事包含了数据转载 2020-10-16 14:07:28 · 723 阅读 · 0 评论 -
面对复杂业务,if-else coder 如何升级?
转自:https://mp.weixin.qq.com/s/u7geoZNpLtfr_crkXVHjAg这篇文章,是对之前我在《阿里高级技术专家方法论:如何写复杂业务代码?》说的“自上而下的结构化分解 + 自下而上的抽象建模”方法论的升级。因为在之前的方法论中,我们缺少一个多维度看问题的视角,这种维度思维的缺失,可能会导致miss掉一些重要的业务信息,从而使我们制定软件设计策略的时候,陷入困难。有了维度思维,我们便可以更加方面的去看清业务的全貌,更加全面的掌握业务信息,从而帮助我们更加体系化的.转载 2020-10-12 11:12:18 · 206 阅读 · 0 评论 -
阿里高级技术专家方法论:如何写复杂业务代码?
转自:https://mp.weixin.qq.com/s?__biz=MzIzOTU0NTQ0MA==&mid=2247491068&idx=1&sn=2e724face6f7e1df5e81c377c84862a6&chksm=e92920f3de5ea9e574cdc9b183e837aab9eb032694d44f44c61b4637d8e477e0c0de831f7f51&scene=21#wechat_redirect一个复杂业务的处理过程业.转载 2020-10-12 11:09:03 · 261 阅读 · 0 评论 -
架构师如何应对复杂业务场景?领域建模的实战案例解析
转自:https://mp.weixin.qq.com/s?__biz=MzIzOTU0NTQ0MA==&mid=2247487105&idx=1&sn=80e8df54282f759496c7d9a419656b88&chksm=e929338ede5eba98f476aaad1ba3026f08503b6e84b65608129490b27834688ad3b7c2f84a10&mpshare=1&scene=1&srcid=0522TRkQFrL转载 2020-10-12 10:56:51 · 1421 阅读 · 0 评论 -
领域建模(只有链接)
领域驱动实战思考(一):用TDD思想对DDD的协作设计过程进行基准化领域驱动设计,盒马技术团队这么做软件工程 | 领域模型入门领域驱动设计(DDD:Domain-Driven Design)原创 2020-10-10 21:59:50 · 177 阅读 · 0 评论 -
换个思维学领域建模方法和实践
转自:https://www.infoq.cn/article/6hpBsMXQNGx_EAPKUuWS,大佬文章建议看原文哈引言对于具备三、五年开发经验的同学而言,可能会接触到领域建模。如果公司规模较大,可能会更早接触这一概念。但是,领域建模好像一座高山,很难越过。目前,业界提出了很多方法建模,但没有一种被公认是最好的方法,大部分建模取各家之长,这也使得这一概念变成"只可意会而不能言传"。本文将分三部分讲解这一概念:为什么领域建模这么难、换个思维学领域建模以及领域建模要回答的三个问题。二、为什转载 2020-10-10 16:29:19 · 626 阅读 · 0 评论 -
十年风雨!看蚂蚁金服SOFA 分布式架构演进
转自:https://www.infoq.cn/article/2Kg9SfVrOqm94aY6SqWz01 介绍大家好,我是蚂蚁金服的鲁直,是蚂蚁金服微服务团队的 TL,同时也负责 SOFA 对外开源的相关事宜。非常感谢中生代社区王友强,蚂蚁右军的组织,让我今天能够有机会给大家做一个分享。我今天给大家带来的分享是「SOFA 分布式架构的演进」。在开始之前,可能很多人不太清楚 SOFA 是什么东西,这里先做下简单地介绍。SOFA 是蚂蚁金服自研的一套金融级分布式中间件,从写下第一行代码到..转载 2020-10-10 13:11:02 · 2133 阅读 · 0 评论 -
SOFA企业应用框架
转自:https://blog.csdn.net/significantfrank/article/details/79286947,大佬的文章,建议阅读原文。前言从业这么多年,接触过银行的应用,Apple的应用,eBay的应用和现在阿里的应用,虽然分属于不同的公司,使用了不同的架构,但有一个共同点就是都很复杂。导致复杂性的原因有很多,如果从架构的层面看,主要有两点,一个是架构设计过于复杂,层次太多能把人绕晕。另一个是根本就没架构,ServiceImpl作为上帝类包揽一切,一杆捅到DAO(就简单场景转载 2020-10-10 11:51:19 · 603 阅读 · 0 评论 -
复杂性应对之道 - 领域建模
原文地址:http://www.uml.org.cn/sjms/201812133.asp都是大佬写的文章,建议看原文 为什么要领域建模 维护过企业级业务系统的同学,基本上没有一个不抱怨业务代码烂的,过程式的面条代码充斥着屏幕,程序员的心力和体力都经受着极大的考验,怎么破? DDD革命 DDD革命性在于,领域模型准确反映了业务语言,而传统J2EE或Spring+Hibernate等事务性编程模型只关心数据,这些数据对象除了简单setter/getter方法外,没有任何业转载 2020-10-09 21:35:01 · 373 阅读 · 0 评论 -
谈谈领域建模
转自:http://www.fanyilun.me/2018/04/08/%E8%B0%88%E8%B0%88%E9%A2%86%E5%9F%9F%E5%BB%BA%E6%A8%A1/哥们写的很用心,建议看原文1 前言 最近工作中,我对于模型的设计,尤其是“领域模型”的设计有一些思考和讨论。这篇文章总结了我对领域建模的看法和方法论,也相当于汇总了各位大师对领域建模的不同思想。 领域建模的目标,是解决复杂业务中软件开发的一系列问题。领域建模也是实现这个目标的一条路径,一种方法论。在实践.转载 2020-10-09 11:00:57 · 2683 阅读 · 0 评论 -
防腐层
定义防腐层\防损层(Anti-corruption layer)介于新应用和遗留应用之间,用于确保新应用的设计不受遗留应用的限制。是一种在不同应用间转换的机制。创建一个防腐层,以根据客户端自己的域模型为客户提供功能。该层通过其现有接口与另一个系统进行通信,几乎不需要或不需要对其进行任何修改。因此,防腐层隔离不仅是为了保护您免受混乱的代码的侵害,还在于分离不同的域并确保它们在将来保持分离。防腐层是将一个域映射到另一个域,这样使用第二个域的服务就不必被第一个域的概念“破坏”。理解:不仅仅是旧系统原创 2020-09-25 21:28:38 · 5795 阅读 · 0 评论 -
领域驱动设计在互联网业务开发中的实践
至少30年以前,一些软件设计人员就已经意识到领域建模和设计的重要性,并形成一种思潮,Eric Evans将其定义为领域驱动设计(Domain-Driven Design,简称DDD)。在互联网开发“小步快跑,迭代试错”的大环境下,DDD似乎是一种比较“古老而缓慢”的思想。然而,由于互联网公司也逐渐深入实体经济,业务日益复杂,我们在开发中也越来越多地遇到传统行业软件开发中所面临的问题。本文就先来讲一下这些问题,然后再尝试在实践中用DDD的思想来解决这些问题。过度耦合业务初期,我们的功能大都非常简单,普转载 2020-09-25 21:21:00 · 357 阅读 · 0 评论 -
DDD分层架构的三种模式
引言在讨论DDD分层架构的模式之前,我们先一起回顾一下DDD和分层架构的相关知识。DDDDDD(Domain Driven Design,领域驱动设计)作为一种软件开发方法,它可以帮助我们设计高质量的软件模型。在正确实现的情况下,我们通过DDD完成的设计恰恰就是软件的工作方式。UL(Ubiquitous Language,通用语言)是团队共享的语言,是DDD中最具威力的特性之一。不管你在团队中的角色如何,只要你是团队的一员,你都将使用UL。由于UL的重要性,所以需要让每个概念在各自的上下文中是转载 2020-09-25 20:27:36 · 2874 阅读 · 0 评论 -
防腐层:面向领域驱动设计的更为稳健的系统集成方案
摘要Custom House公司目前所使用的汇兑系统是与另一个老系统集成的。经过多年的演化,两套系统之间的关联与交互变得非常复杂,以至于对这两套系统的任何一处修改,都会带来一些难以预计的问题。而另一方面,从集成层(integration layer)对系统进行重构,不仅风险较大,而且也很耗时。于是,对于这样的现状,我们需要对两套系统进行革命性地重构。要实现这样的重构,就需要在两套系统中间引入防腐层,从而对两套系统进行隔离。防腐层对两套系统之间的概念模型以及功能行为的转换进行了合理封装,并且能够确保其转载 2020-09-25 20:09:27 · 1035 阅读 · 0 评论 -
CRUD玩的这么溜,你知道CQRS吗
转自,建议去看原文哈:https://blog.csdn.net/bntX2jSQfEHy7/article/details/96657886今天主要跟大家分享一下什么是 CQRS,以及在项目中如何去使用。一、CRUD系统我们平常最熟悉的就是三层架构,通常都是通过数据访问层来修改或者查询数据,一般修改和查询使用的是相同的实体。然后通过业务层来处理业务逻辑,将处理结果封装成DTO对象返回给控制层,再通过前端渲染。反之亦然。这里基本上是围绕关系数据库构建而成的“创建、读取、更新、删除”系统(转载 2020-06-15 20:08:54 · 250 阅读 · 0 评论 -
并发和高并发
并发和高并发并发包含了高并发,并发有可能发生在单个机器上,也有可能发生在分布式的场景下,发生在分布式场景下的一般就是高并发了。Java并发包下的java.util.concurrent的类都是解决在单机情况下的并发问题的,我们常见和常用的类包括:AtomicInteger、AtomicLong、ReentrantLock、ConcurrentHashMap以及ExecutorService等,这种问题相对简单,而我们在业务实现的时候大部分关注的是高并发的场景,即请求在有限的资源的前提下请求打在多台机器上原创 2020-06-12 20:58:28 · 746 阅读 · 0 评论 -
服务端高并发分布式架构演进之路
转自:https://segmentfault.com/a/11900000186261631. 概述本文以淘宝作为例子,介绍从一百个到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知,文章最后汇总了一些架构设计的原则。特别说明:本文以淘宝为例仅仅是为了便于说明演进过程可能遇到的问题,并非是淘宝真正的技术演进路径2. 基本概念在介绍架构之前,为了避免部分读者对架构设计中的一些概念不了解,下面对几个最基础的概念进行介绍:转载 2020-05-15 16:40:10 · 328 阅读 · 0 评论 -
架构风格
前两篇文章讲的是架构分类和技术架构,这篇文章继续深入探讨架构风格中相关的概念以及区别。本文以微服务为思考点,以微服务和DDD为连接点,梳理出两条线:微服务前后历史线以及DDD前后历史线,这样我们可以看清发展的架构发展的过程。先抛出两条线的图:架构风格单体架构的应用比较容易部署、测试,在项目的初期,单体应用可以很好地运行。然而,随着需求的不断增加,越来越多的人加入开发团队,代码库也在飞速地膨胀。慢慢地,单体应用变得越来越臃肿,可维护性、灵活性逐渐降低,维护成本越来越高。客户端/服务器体系结构原创 2020-05-14 13:09:15 · 355 阅读 · 0 评论 -
技术架构
上一篇文章介绍了什么是架构和架构的分类,作为开发人员的关注点首先是从技术架构开始的,这篇文章的重点就是在技术架构,在技术架构中会涉及到架构风格、架构模式和设计模式,这三者是一种什么关系,这三者和技术架构又什么关系呢?先通过下图对这些关系有一大致的了解。架构风格和模式主要引自:https://juejin.im/post/5decf93cf265da33d21e6d1d架构风格和模式最重要的区分是范围的区别,架构风格非常粗略地告诉我们应该如何组织代码。它的粒度比较大,说明了应用的分层和高层级的模块,这原创 2020-05-12 22:55:58 · 12352 阅读 · 0 评论