架构设计 内容分享
文章平均质量分 92
相信每一位程序员都有一颗成为架构师的心。
毕竟,我们都希望在自己所从事的领域变得更好,即使不能称为最好。程序员的成长绕不开架构设计,有时架构设计就像鸿沟一样挡在程序员晋升之路上,只要跨过去就可以海阔天空。
之乎者也·
机车疾驰在路上,代码飞舞在指尖,热血与逻辑交织,创造属于我的数字世界。
展开
-
架构设计内容分享(二百一十):设计一个大并发、大数据的系统架构,说说设计思路
也就是说,一个类应该对自己需要耦合或调用的类知道的最少,类与类之间的关系越密切,耦合度越大,那么类的变化对其耦合的类的影响也会越大,这也是我们面向对象设计的核心原则:低耦合,高内聚。优秀的架构和产品都是一步一步迭代出来的,用户量的不断增大,业务的扩展进行不断地迭代升级,最终演化成优秀的架构。其根本思想是强调了类的松耦合,类之间的耦合越弱,越有利于复用,一个处在弱耦合的类被修改,不会波及有关系的类。缓存,从操作系统到浏览器,从数据库到消息队列,从应用软件到操作系统,从操作系统到CPU,无处不在。原创 2024-02-15 12:22:31 · 1696 阅读 · 0 评论 -
架构设计内容分享(二百零九):响应式架构,构建具备实时响应能力的系统
响应式架构是一种面向服务的架构风格,旨在构建具备实时响应能力、高度弹性和可伸缩性的系统。这种架构风格将系统分解为多个小而自治的服务,这些服务能够根据需求进行独立扩展和缩减,从而更好地适应不断变化的工作负载。原创 2024-02-15 12:15:43 · 1098 阅读 · 0 评论 -
架构设计内容分享(二百零八):微内核架构,提高系统稳定性和可维护性的设计思路
微内核架构是一种软件设计范式,其核心思想是将系统的核心功能以最小化的内核形式存在,而将其他功能作为可插拔的插件。本节将深入探讨微内核架构的设计思路、原则和核心概念。在微内核架构中,内核与插件之间通过清晰明确的接口进行通信。接口定义是微内核架构中的关键概念,它确保了内核和插件之间的松耦合性,使得插件的开发和替换更加容易。在微内核架构中,良好定义的模块和接口是关键。每个插件模块应该有清晰的功能定义,且接口设计应当简洁而灵活。模块之间的接口要尽可能松耦合,以确保插件的独立开发和替换。原创 2024-02-15 11:55:57 · 1377 阅读 · 0 评论 -
架构设计内容分享(二百零七):轻量级游戏服务器框架Skynet
它是一个轻量级游戏服务器框架,但也不仅仅用于游戏。轻量级体现在:实现了 actor 模型,以及相关的脚手架(工具集):actor 间数据共享机制以及c 服务扩展机制。实现了服务器框架的基础组件。实现了 reactor 并发网络库;并提供了大量连接的接入方案;基于自身网络库,实现了常用的数据库驱动(异步连接方案),并融合了 lua 数据结构;实现了网关服务;时间轮用于处理定时消息。skynet抽象了actor并发模型,用户层抽象进程;sknet通过消息的方式共享内存;通过消息驱动actor运行。原创 2024-02-15 10:43:25 · 1207 阅读 · 0 评论 -
架构设计内容分享(二百零六):谈基于平台+应用思想下的企业微服务架构转型
今天准备再详细讲解下传统企业微服务架构转型,在中台概念没有出来之前,我们在构建企业内部私有云PaaS平台的时候,已经提出了平台+应用的构建思想。而这个思想在当前中台,微服务架构下仍然适用。对于企业IT架构转型,实际上我们也看到存在平台+应用全新构建模式,也存在最大化保留IT当前遗留资产进行平滑迁移和适配模式。因此今天重点会对这几种模式进行详细介绍。原创 2024-02-15 10:32:44 · 843 阅读 · 0 评论 -
架构设计内容分享(二百零五):面向服务架构,实现业务逻辑与技术的完美结合
面向服务架构是一种设计原则和体系结构风格,将软件系统划分为独立的、自治的服务单元,这些服务通过定义好的接口相互通信。每个服务代表一个特定的业务功能,并且可以独立开发、部署和维护。设计清晰、标准化的接口,包括输入、输出和错误处理规范。良好定义的接口有助于服务的正确使用和集成。原创 2024-02-15 10:20:15 · 1683 阅读 · 0 评论 -
架构设计内容分享(二百零四):一种基于数据治理的大数据中台架构系统
一种基于数据治理的大数据中台架构系统,包括:数据接入模块,用于接入企业需要进行治理的数据源,并将接入的需要进行治理的数据源发送给数据湖仓模块;数据湖仓模块,用于根据接入数据的字段结构,在数据湖和数据仓库中创建数据模型,存储采集到的数据;数据治理模块,用于按预设规则对接入到数据湖仓的数据进行统一治理,向数据访问模块和数据应用模块输出高质量的数据资产和主数据;数据访问模块,用于接收数据治理平台治理好的高质量资产和主数据,并提供多种方式供内外部客户使用;原创 2024-02-15 10:11:12 · 969 阅读 · 0 评论 -
架构设计内容分享(二百零三):SaaS系统的扩展开发实践
对于 SaaS 服务商来说,标准化产品和个性化需求是两个重要的方面。标准化产品指的是一种在各个客户之间共享的统一产品或服务。通过提供标准化产品,SaaS 服务商可以更有效地开发、部署和维护软件,降低成本并提升整体的可靠性和稳定性。然而,不同的客户可能有不同的诉求,因此个性化需求也是需要考虑的因素。某些客户可能需要定制化的功能、设计或流程,以满足其独特的业务需求。为了满足这些个性化需求,SaaS 服务商需要进行额外的开发和支持,确保他们的产品能够适应不同客户的需求。原创 2024-02-15 10:00:23 · 990 阅读 · 0 评论 -
架构设计内容分享(二百零二):API设计,从基础到最佳实践
使用Protocol Buffers,一种语言中立、平台中立、可扩展的序列化结构化数据的方式。另一部分是决定要使用的通信协议,比如HTTP、WebSockets等,以及数据传输机制:JSON、XML或Protocol Buffers。在GraphQL的情况下,添加新字段(v2字段)而不删除旧字段有助于在不破坏现有客户端的情况下发展API。通常以HTTP 200状态码回应,即使在错误的情况下也是如此,并在响应体中提供错误详细信息。这可能导致数据的过多或过少获取-因为可能需要更多的端点来访问特定的数据。原创 2024-02-15 09:48:13 · 960 阅读 · 0 评论 -
架构设计内容分享(二百零一):什么是数据仓库的架构?企业数据仓库架构如何建设?
以上报表型、分析型的数据产品,但也会有延申出来的各种特定业务的数据决策系统,比如银行业基于管理层监控的的行长驾驶舱、零售业基于门店数据经营的决策系统,以及电商平台的营销参谋(输入营销目标及参数,比如要开展双十一母婴市场的促销活动,系统可以基于以往海量数据计算出应该选择什么品类的商品,在什么用户群中,以什么形式开展活动效果会更佳),都是基于这样的逻辑——基于业务深度应用。而数据挖掘则是通过历史数据建立模型,在拟合历史的基础上,分析未来趋势,判断哪些因素的改变将很可能意味着客户的最终流失,进而避免其发生。原创 2024-02-15 09:35:25 · 1087 阅读 · 0 评论 -
架构设计内容分享(二百):探索软件设计的九大核心架构模式
分层架构是一种经典的软件设计模式,将整个系统划分为若干层次,每个层次都有特定的责任。这种模式在系统设计中强调了模块化和分离关注点的原则,以提高系统的可维护性、可扩展性和可读性。分层架构是一种经典而强大的设计模式,为软件开发者提供了一种有效的方式来组织和管理复杂的系统。通过遵循其原则和最佳实践,开发人员能够构建出易于维护、扩展和理解的系统,为软件设计带来了架构之美。微服务架构是一种将软件系统拆分成独立的、小型服务的架构风格。每个服务都是一个独立的单元,运行在自己的进程中,并通过轻量级的通信机制进行交互。原创 2024-02-15 09:26:30 · 974 阅读 · 0 评论 -
架构设计内容分享(一百九十九):全栈架构从0开始,Vue的搭建与开发
Vue.js是一套构建用户界面的 “渐进式框架”。与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计。Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合。如果你之前已经习惯了用jQuery操作DOM,学习Vue.js时请先抛开手动操作DOM的思维,因为Vue.js是数据驱动的,你无需手动操作DOM。它通过一些特殊的HTML语法,将DOM和数据绑定起来。一旦你创建了绑定,DOM将和数据保持同步,每当变更了数据,DOM也会相应地更新。原创 2024-02-15 08:57:53 · 1154 阅读 · 0 评论 -
架构设计内容分享(一百九十八):菱形对称架构的演进、定义和价值
限界上下文是基本的架构单元,每个限界上下文都是一个自治的独立王国。一个典型的限界上下文是,它在边界内维护着由自己控制的架构体系,使得内部所有的软件元素共同形成一个相对独立的主体,为系统贡献了内聚的业务能力。然而,Eric Evans在提出限界上下文的概念时,并没有提出与之匹配的架构模式。他提出的分层架构(Layered Architecture)是对整个系统的层次划分,核心思想是将领域单独分离出来。这是从业务维度对整个系统的横向切分,与限界上下文领域维度的纵向切分形成了一种交错的架构体系。原创 2024-02-14 22:50:49 · 1118 阅读 · 0 评论 -
架构设计内容分享(一百九十七):分布式架构
微服务架构是一种将单一应用程序划分为一组小的、独立的服务的方法。每个服务运行在其自己的进程中,服务之间通过轻量级的方式(如HTTP REST API)进行通信。原创 2024-02-14 22:39:15 · 957 阅读 · 0 评论 -
架构设计内容分享(一百九十六):高并发架构设计(三大利器:缓存、限流和降级)
高并发的定义高并发是指系统或应用程序在同一时间段内接收到大量并发请求的能力。具体来说,高并发环境下系统需要能够同时处理大量的请求,而不会出现性能问题或响应延迟高并发的特点1.大量请求:高并发场景下,系统需要同时处理大量的请求,这些请求可能来自于不同的用户或客户端。2.同时访问:这些请求几乎同时到达系统,需要在短时间内进行处理和响应。3.资源竞争:由于大量请求同时到达,系统的资源(如CPU、内存、网络带宽等)可能会面临竞争和争夺。原创 2024-02-14 22:34:53 · 974 阅读 · 0 评论 -
架构设计内容分享(一百九十五):揭秘微服务容错处理技术
熔断机制也是微服务架构中的一种重要的容错处理技术,它借鉴的是电路中的熔断器(Fuse)的设计概念,在电路中,当电流超过阈值的时候,熔断器就会熔断,来保护电路不受损坏,回到软件系统中,熔断器模式就是用于保护系统免受级联故障的影响,提高系统的稳定性和可用性。超时控制是微服务治理中的一项基本技术,通过合理的设置和策略运用,可以有效地提高系统的稳定性和用户体验,而且,超时控制是需要与其他容错机制,比如重试、熔断、降级等结合起来使用的,以构建更加健壮的微服务架构。原创 2024-02-14 22:25:57 · 936 阅读 · 0 评论 -
架构设计内容分享(一百九十四):企业应用级自动化运维建设思路
本文试图从应用层面探讨自动化运维的实现思路,系统运维实质性是对操作系统本身运行维护的一种特殊应用运维,业务作为一种或者多种应用系统的功能,通过业务--应用关联实现业务的应用遍历查询,通过与流程审批管理、服务管理等系统对接实现业务维护的自动化, 从而实现全方位多角度的自动化运维平台。我们将应用系统的各种开发特性剔除,当作一个黑盒,根据我多年的开发维护经验,应用系统实际上有着很多一致的运行关注要点,并开发了一些相应的通用运维操作程序,丰富和简化了日常运维,也能轻易地使用到应用层面的自动化运维中。原创 2024-02-14 22:17:46 · 859 阅读 · 0 评论 -
架构设计内容分享(一百九十三):全链路追踪在腾讯云的落地思考与实践
随着微服务以及容器技术的发展,系统软件的构建方式也随之发生了改变,微服务调用关系错综复杂,传统的监控方案很难满足当下应用场景的需求,指标、链路追踪以及日志目前已经成为了云原生应用的“必备品”,当把它们集成在一起时,需要拥有一个更加成熟的现代化可观测体系来支撑,以便了解应用系统内发生的事情。通过可观测性体系的建立,我们可以更好的去洞察监控数据,从而能够更快速的做问题定界以及根因定位,降低 MTTR。随着腾讯云的快速发展,越来越多的企业客户选择腾讯云作为其业务运行的基础设施。原创 2024-02-14 22:12:12 · 812 阅读 · 0 评论 -
架构设计内容分享(一百九十二):自动化平台执行器设计与实现
为此我们将自动化平台由“半平台化”转型为“全平台化”,实现了轻量高效、功能完备、使用简单、标准化程度高的自动化平台,支持“在线可视化、组件化(可复用)、全代码、低代码、零代码”编写用例。技术实现上融入了优秀自动化框架的核心理念,也拓展支持了很多实用功能,同时更灵活、更具可塑性、更适配平台化,并支持“在线可视化、组件化(可复用)、全代码、低代码、零代码”编写用例,也能满足低门槛、高效率产出自动化用例的需要,还能实现极其复杂的测试场景。用于在页面上进行参数替换,支持从变量空间、环境变量中取值,或调用系统方法。原创 2024-02-14 22:06:04 · 1110 阅读 · 0 评论 -
架构设计内容分享(一百九十一):软件架构一致性
实体企业家都会非常清晰地了解他自己生意所涉及的供应链。在用来和软件工程做类比之前,我们可以先简单分析下牛奶这一商品的供应链体系,消费者购买牛奶,为此付费、满足自己强身健体的欲望。为了生产超市货架上我们看到的牛奶,背后需要生产资料或者服务非常之多,例如需要冷链物流、需要巴氏杀菌的设备、当然还有奶牛。再分析奶牛的背后,至少能够理解背后需要干草(有些高品质的牛奶需要特定的上等苜蓿干草),而大规模生产干草需要割草机、捆扎机、卡车等等。除了干草外,生产奶牛还需要牧场,而牧场又随时而来需要灌溉系统的支撑等等。原创 2024-02-14 21:51:32 · 836 阅读 · 0 评论 -
架构设计内容分享(一百九十):转转基于MQ的分布式重试框架设计方案
在计算机领域中,重试机制的重要性不言而喻。客户端模式和服务端模式。客户端模式简单易用,但可靠性较低;而服务端模式虽然相对复杂,但能够提供更高的可靠性。无论是客户端模式还是服务端模式,重试机制都是保障系统正常运行的重要一环。选择适合您业务需求的模式,并通过合理的配置项进行优化,将为您的系统带来更好的表现和用户体验。原创 2024-02-14 21:43:07 · 944 阅读 · 0 评论 -
架构设计内容分享(一百八十九):架构的管理和监控
构建一个辅助服务,代表消费者使用服务或应用程序发送网络请求。进程外的代理服务(之前介绍中间件的时候也提到了,很多框架层面的事情可以以软件框架的形式寄宿在进程内,也可以以独立的代理形式做一个网络中间件)。这里的大使模式意思就是这么一个网络代理进程,用于和远端的服务进行通讯,完成下面的工作:服务路由、、服务熔断、服务跟踪、服务监控、服务授权、数据加密、日志记录。由于是独立进程的网络服务,所以这个模式适合于我们有多语言多框架都需要干同样的事情,那么我们的框架中客户端部分的很多工作可以移出来放到大使服务中去。原创 2024-02-14 11:14:29 · 1061 阅读 · 0 评论 -
架构设计内容分享(一百八十八):医院PACS信息系统分布式存储架构设计
由于缓存盘写入速度快,数据盘写入数据慢,随着大量的数据写入,没有及时写入到数据盘上的数据是会堆积在缓存盘中的,为了避免缓存盘被写满的情况出现,最佳实践是5:1,即5块大容量NL-SATA盘配置1块固态硬盘,如果是NVMe协议的固态盘,可以配置8:1。PACS应用在医院众多的数字化信息系统中是比较特殊的一个,存储容量需求大,网络访问要求高,在“智慧医院”建设的大环境下,在满足患者看病的同时,还需要满足临床应用、教学、会诊和科研的需要,满足数据安全保护的需要,有完善的数据保护机制。原创 2024-02-14 11:06:03 · 1406 阅读 · 0 评论 -
架构设计内容分享(一百八十七):京东物流基于 StarRocks 的数据分析平台建设
最下层左侧是生产系统数据区;报表生成之后,有时需要互相传阅,在 Excel 非常多的情况下,大家互相传输,有时会用到一些线下的传输工具,导致数据来源不明晰,由于传输过程中有很多人工参与,协同比较困难,数据的时效性、安全性都得不到保障,并且存在大量重复性工作,性能体验非常差。在我们的业务场景中,当一个订单从商城域进入物流域后,会经过很多环节,从仓储到分拣,再到配送、拓投,链条非常长,中间系统特别多,数据也比较多,各个系统产生的数据被存储到各种各样的异构存储里,一线运营人员在找数据时存在一定困难。原创 2024-02-14 10:38:03 · 975 阅读 · 0 评论 -
架构设计内容分享(一百八十六):微服务架构设计 | 如何设计高性能系统
尤其在中国这样拥有庞大用户基数的环境下,不用说阿里巴巴、京东这类需要满足双十一大促时每秒几万甚至几十万订单的系统,即使是一些垂直领域的业务系统(如三甲医院的挂号系统)每天也有不小的访问量。使用虚拟化技术或容器化技术,如VMware、Docker等,可以提高硬件资源的利用率,降低系统运行的成本,同时提高系统的弹性和可伸缩性。网络传输的时间通常会影响用户请求的响应时间,选择里用户较近的机房进行部署,或者使用CDN,通常可以缩短请求响应时间,提升系统性能。CAS操作是原子的,可以用于实现无锁化的数据结构。原创 2024-02-14 10:16:21 · 947 阅读 · 0 评论 -
架构设计内容分享(一百八十五):企业应用架构概述
在信息系统中,应用架构或应用架构是构成企业架构(EA)支柱的几个架构域之一应用架构描述了业务中使用的应用程序的行为,重点是它们如何相互之间以及如何与用户交互。它关注的是应用程序消费和生成的数据,而不是它们的内部结构。在应用程序组合管理中,应用程序被映射到业务功能和流程以及成本、功能质量和技术质量,以评估所提供的价值。应用架构是根据业务和功能需求指定的。这涉及到根据功能覆盖率定义应用程序包、数据库和中间件系统之间的交互。这有助于识别功能覆盖范围中的任何集成问题或差距。原创 2024-02-14 09:26:23 · 934 阅读 · 0 评论 -
架构设计内容分享(一百八十四):简谈基于SOA思路构建财务中台
今天简单分析下基于SOA和微服务架构思路来构建财务中台方面的内容。原创 2024-02-14 09:14:41 · 1005 阅读 · 0 评论 -
架构设计内容分享(一百八十三):微服务架构中的网关技术选择策略
在使用单体应用程序架构时,客户端(无论是Web还是移动端)通常通过向后端应用程序发起一次REST调用来获取数据。负载均衡器将请求路由至N个相同的应用程序实例中的一个。随后,应用程序会查询各种数据库表,并将响应返回给客户端。然而,在微服务架构中,单体应用程序被拆分成多个微服务。若直接将所有微服务对外暴露,可能会导致安全方面的各种问题,同时也会增加内外耦合的严重性。客户端可以直接向每个微服务发送请求,其问题主要如下:• 客户端需求和每个微服务暴露的细粒度 API 不匹配。原创 2024-02-13 17:58:56 · 934 阅读 · 0 评论 -
架构设计内容分享(一百八十二):千万日活的签到系统如何设计?
事务是指由一组操作组成的一个工作单元,这个工作单元具有原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)。原子性:执行单元中的操作要么全部执行成功,要么全部失败。如果有一部分成功一部分失败那么成功的操作要全部回滚到执行前的状态。一致性:执行一次事务会使用数据从一个正确的状态转换到另一个正确的状态,执行前后数据都是完整的。隔离性:在该事务执行的过程中,任何数据的改变只存在于该事务之中,对外界没有影响,事务与事务之间是完全的隔离的。原创 2024-02-13 17:49:00 · 903 阅读 · 0 评论 -
架构设计内容分享(一百八十一):字节跳动百万级Metrics Agent性能优化的探索与实践
因此我们充分理解了msgpack的协议格式(https://github.com/msgpack/msgpack/blob/master/spec.md)后,在接收端将多个数据小包(一条打点数据)聚合成一个数据大包(多条打点数据),进行一次任务提交,提高了接收端的处理性能,降低了线程切换的开销。每个 tag 的 key_ 和 value_ 是单独的内存(如果数据较短,stl 不会额外分配内存,这样的情况下就没有单独分配的内存了),存在着 cache miss 的开销,硬件预取效果也会变差;原创 2024-02-13 16:16:51 · 890 阅读 · 0 评论 -
架构设计内容分享(一百八十):滴滴OLAP的技术实践与发展方向
继而加工ADS层-StarRocks中的异步物化视图进行加速,StarRocks的异步物化视图使用定时刷新机制,时效性相对会差一些,数据相对底表有一定的更新延迟,查询底表和异步物化视图可能会存在一定的差异,但因为异步视图存储的是最终计算结果,查询速度极快。我们结合表数据特点,对异步视图的表数量进行优化。网约车的实时看版,是滴滴最核心的业务监控看板,包括实时的呼叫数、冒泡数、还有实时的GMV等超过20多个业务指标,支持业务、数据和运营人员,通过看板数据变化,进行业务趋势及同环比的监测,发现业务过程问题;原创 2024-02-13 15:22:17 · 965 阅读 · 0 评论 -
架构设计内容分享(一百七十九):初探分布式链路追踪
可观察性不单是一套理论框架,而且并不强制具体的技术规格。其核心在于鼓励团队内化可观察性的理念,并确保由研发人员构建的应用程序具备可观察性。在学术领域中,尽管“可观测性”这一术语是近年来从控制理论中引进的新词,但实际上,它在计算机科学领域已有深厚的实践基础。学者们通常会把可观测性细化为三个更具体的研究方向:事件日志、链路追踪和聚合度量。这三个领域虽然各有侧重点,但并非完全孤立,它们之间存在着天然的交集与互补性。原创 2024-02-13 15:14:36 · 979 阅读 · 0 评论 -
架构设计内容分享(一百七十八):支付系统的状态机设计与核心代码实现
在线支付系统作为当今数字经济的基石,每年支撑几十万亿的交易规模,其稳定性至关重要。在这背后,是一种被誉为支付系统“心脏”的技术——状态机。本文将一步步介绍状态机的概念、其在支付系统中的重要性、设计原则、常见误区、最佳实践,以及一个实际的Java代码实现。状态机,也称为有限状态机(FSM, Finite State Machine),是一种行为模型,由一组定义良好的状态、状态之间的转换规则和一个初始状态组成。它根据当前的状态和输入的事件,从一个状态转移到另一个状态。原创 2024-02-13 13:32:09 · 1035 阅读 · 0 评论 -
架构设计内容分享(一百七十七):总监和架构师都在用的高可用架构分析方法
当我们谈到高可用时,都会说到可用性。那么,什么是可用性?我们知道,任何东西都有不可用的时候,比如,法拉利也会有抛锚的时候;身体特别健康的人,也难免会头疼感冒;即使是地球,也可能会有毁灭的一天;更何况是服务器/线上应用,硬件故障和软件故障都可能导致不可用。可见,我们没办法做到东西的 100%可用性,只能做到高可用(可能无限接近但始终无法到达 100%)。失效模式与影响分析。原创 2024-02-13 13:18:13 · 885 阅读 · 0 评论 -
架构设计内容分享(一百七十六):OpenFeign 架构体系解析
在 java 中,假如我们在编译期不知道这个对象是何方神圣,只能等待程序执行的时候,也就在是运行期才能知道,那么我们就称之为 "动态" 获取对象(比如通过类名+ 反射创建一个实例)。动态代理 是面试场景里的高频问题,从 Spring 中 AOP 的实现方式,到让自己手写一个动“态代理实例,这个话题仿佛成了面试中很有仪式感的一个问题。:Feign 是通过一个代理接口进行远程调用,这一步就是为了构造接口的动态代理对象,用来代理远程服务的真实调用,这样你就可以像调用本地方法一样发起 HTTP 请求,不需要像。原创 2024-02-13 13:00:33 · 875 阅读 · 0 评论 -
架构设计内容分享(一百七十五):单体架构、微服务和无服务器架构
在这篇文章中,我将演示在决定使用单体架构、微服务架构和无服务器架构时的权衡的简化心智模型。目标是突显每种风格的固有优势和缺陷,并提供关于何时选择哪种架构风格的指导。单体架构对于小团队或项目来说是理想的入门架构。它简单易上手,通常在需要超过一个团队的规模之前能够提供很多收益。在构建单体架构时,务必从模块化开始,即使可能会增加样板代码。这意味着构建组件并在层之间保持严格的逻辑分离(更多详见Clean Architecture)。原创 2024-02-13 12:19:22 · 1209 阅读 · 0 评论 -
云原生内容分享(二十):云原生架构体系和重点概念解读
云原生(Cloud-Native)的概念在国内提及的越来越多,但大部分人对云原生的认识仅限于容器、微服务、DevOps等内容,把容器、微服务、 DevOps就等同于云原生,这显然是不对的。CNCF从其自身的角度定义了云原生技术:云原生技术使企业能够在现代动态环境中构建和运行可扩展的应用程序,如在公共云、私有云和混合云环境中。包括容器、服务网格、微服务、不变的基础设施和声明式API等。采用这些技术可实现系统的松散耦合性、弹性、可管理性和可观察性等。原创 2024-02-09 15:15:38 · 897 阅读 · 0 评论 -
数据仓库内容分享(十七):Doris实践分享:它做了哪些架构优化和场景优化?
Apache Doris是一款开源的实时数据仓库,由百度旗下的技术团队开发。它具有高性能、高可靠性、易扩展等特点,能够满足大规模数据实时查询和分析的需求。目前,Apache Doris已经成为国内外众多企业的首选数据仓库解决方案,包括阿里巴巴、美团、京东、滴滴等知名企业。作为被众多大型互联网企业广泛采用的实时数据仓库,Doris拥有一些核心优势和独特的特点。我们从它的架构设计和使用场景来看一下这些优势。原创 2024-02-08 19:43:50 · 1513 阅读 · 0 评论 -
DDD领域驱动设计内容分享(八):DDD领域驱动设计,从理论到实践掌握DDD分层架构设计
领域驱动设计(Domain-driven Design,DDD)是一种软件设计方法,该方法的核心思想是将业务领域作为设计和开发的中心,强调对业务领域的深入理解、业务语言的建模以及领域对象的设计和实现。这样可以更好地将软件设计和业务需求紧密结合起来,从而提高软件的可维护性、可扩展性和可重用性,使得软件更加贴近业务需求。第1步:战略设计战略设计主要从业务视角出发,包括了业务场景分析、领域建模、划分边界上下文三个阶段。限界上下文可以作为微服务设计的参考边界。第2步:战术设计。原创 2023-12-28 09:26:11 · 988 阅读 · 0 评论 -
DDD领域驱动设计内容分享(十):去哪儿的DDD架构实操之路
上列四张图简单展示了去哪儿网本次重构的主题,也是酒店基础信息部所负责的业务。列表页:用户打开 APP,输入目的地和入住时间,点击搜索,便会转到列表页,展现搜索地点的所有酒店列表信息。详情页:点击希望入住的酒店,即可进入详情页。酒店Info:点击酒店名字,则可进入酒店Info页。进订页:用户决定预定酒店房间后,就跳转到进订页。组织资源是否集中在了核心业务领域;是否能用统一语言沟通描述业务,体现在需求评审、站会等有关会议的效率上;领域知识是否得到沉淀,是否有人能承担“领域专家”;原创 2023-12-28 09:33:24 · 1267 阅读 · 0 评论