系统架构设计
文章平均质量分 81
系统架构的设计思想和系统设计的学习
庄小焱
我是庄小焱,阿里巴巴Java高级工程师、PMP项目管理专家、系统架构设计师(高级)、CSDN博文专家。 博主在微服务、虚拟化、系统架构、大数据、机器学习领域不断学习,同时在博客中分享自己学习知识和相关技术, 欢迎大家和我交流学习,欢迎大家关注我的博客。
展开
-
系统架构设计——架构师学习规划目标
想要成为一名优秀的架构师,但是你又不知道从哪里学习。下面给你分享几张学习的路径的图,按照这个知识整理好你自己的内容,不管是面试还是真的做项目都是十分有底气的。原创 2021-09-26 14:56:54 · 404 阅读 · 0 评论 -
领域驱动设计——DDD领域驱动设计基础
如果你以往对 DDD 的了解并不深入,甚至是第一次接触,你一定会觉得 DDD 的术语非常多,且非常陌生,这些术语之间的关系都算是个“拦路虎”。搞懂这些之后呢,怎么应用它们,从何下手来设计领域模型等等这些问题又接踵而至。如果你对 DDD 有过研究,在学会怎么用之后,你可能还会反过来想:“我费了这么大劲儿去搞懂它,那它到底会让我的系统变成什么样呢?可以解决什么具体问题?是不是真有大家说得那么好?”。本博文就是讲解 DDD 的核心知识体系,具体包括:领域、子域、核心域、通用域、支撑域、限界上下文、实体、值对象、聚原创 2021-09-03 23:35:38 · 511 阅读 · 0 评论 -
领域驱动设计——DDD领域驱动设计进阶
进阶篇主要讲解领域事件、DDD 分层架构、几种常见的微服务架构模型以及中台设计思想等内容。如何通过领域事件实现微服务解耦?、怎样进行微服务分层设计?、如何实现层与层之间的服务协作?、通过几种微服务架构模型的对比分析,让你了解领域模型和微服务分层的作用和价值。中台设计的核心思想,和你探讨如何实现前中后台的协同和融合?如何利用 DDD 进行中台设计?原创 2024-01-15 23:03:00 · 1078 阅读 · 0 评论 -
领域驱动设计——DDD领域驱动设计实战
通过实战,让大家更加的理解和应用DDD在自己的项目中,实战如何用 DDD 设计思想构建企业级可复用的中台业务模型,了解事件风暴以及用事件风暴构建领域模型的过程。带你了解如何用 DDD 设计微服务代码模型,如何从领域模型完成微服务设计,建立领域模型与微服务代码模型的映射关系,如何完成微服务的架构演进等。原创 2024-01-15 23:12:24 · 619 阅读 · 0 评论 -
分布式系统技术——分布式系统知识脑图
本博文主要介绍分布式系统知识脑图,帮助大家更好的快速的了解分布式系统相关知识。同时也是为大家在工作中应对分布式系统设计提供相关参考。原创 2023-09-21 09:32:50 · 195 阅读 · 0 评论 -
分布式系统技术——分布式基础理论与算法
互联网发展到今天,用户数量越来越多,产生的数据规模也越来越大,应用系统必须支持高并发访问和海量数据处理的需求。对比集中式架构,分布式系统由于具有可扩展性,可以动态扩展服务和存储节点,使用廉价的机器构建高性能的服务,更适合如今的互联网业务。分布式系统技术已经成为微服务架构、大数据、云计算等技术领域的基石,在电商、互联网金融、支付等众多业务中,都离不开分布式技术的有效运用。一个分布式系统是一些独立的计算机集合,但是对这个系统的用户来说,系统就像一台计算机一样。本文主要介绍分布式的基础知识,以及分布式的理论基础和原创 2022-10-31 22:23:06 · 930 阅读 · 0 评论 -
分布式系统技术——分布式ID原理与实战
摘要在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识。如在美团点评的金融、支付、餐饮、酒店、猫眼电影等产品的系统中,数据日渐增长,对数据分库分表后需要有一个唯一ID来标识一条数据或消息,数据库的自增ID显然不能满足需求;特别一点的如订单、骑手、优惠券也都需要有唯一ID做标识。此时一个能够生成全局唯一ID的系统是非常必要的。概括下来,那业务系统对ID号的要求有哪些呢?全局唯一性:不能出现重复的ID号,既然是唯一标识,这是最基本的要求。 趋势递增:在MySQL InnoDB引擎中使用的是聚集原创 2021-12-18 14:10:42 · 909 阅读 · 0 评论 -
分布式系统技术——分布式锁原理与实战
摘要本博文主要是的介绍分布式锁的原理和应用场景,分布式锁实现主要以Zookeeper(以下简称zk)、Redis、MySQL这三种为主。下面将分别对以上的分布式进行详细的说明。MySQL分布式锁Redis分布式锁Zookeeper分布式锁分布式锁总结参考博文...............原创 2021-12-26 08:55:10 · 2040 阅读 · 0 评论 -
分布式系统技术——分布式事务原理与实战
本博文详细介绍分布式事务原理与实战,熟悉多种分布式事务解决方案,帮助你的更好的应用在实践项目中。原创 2022-11-21 23:35:09 · 830 阅读 · 0 评论 -
分布式系统技术——分布式缓存原理与实战
本博文主要介绍分布式缓存原理与实现,帮助大家更好的学习分布式缓存原理和更好将缓存思想应用在自己的项目中。原创 2022-11-02 20:54:51 · 2271 阅读 · 1 评论 -
分布式系统技术——分布式任务原理与实战
本文主要介绍定时任务的基础和单体方式下定时任务方案的演化,以及常见的分布式任务方案和技术实现要点,帮助大家更好的学习理解分布式任务的思想,同时更好的在项目中应用分布式任务来完成部分系统设计工作。原创 2021-12-19 10:10:50 · 2759 阅读 · 0 评论 -
系统架构设计——电商系统架构设计
通过了解一线互联网公司的架构的演进,以帮助自己在设计系统的时候参考。介绍淘宝从一百个并发到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知,文章最后汇总了一些架构设计的原则。原创 2022-01-20 16:55:14 · 1976 阅读 · 0 评论 -
系统架构设计——互联网金融系统架构设计
根据第三方机构预统计,自2016年-2019年,我国零售信贷规模维持20%以上的高复合增长率,2017年中国零售信贷规模达到27万亿,到2019年,总规模超过37万亿。近年来互联网金融蓬勃发展,在借贷、保险、股权等领域涌现出一大批互联网与金融场景相结合的创新产品。同时作为互联网金融的子领域消费金融领域,在国家消费升级战略下,各大平台推出了如花呗、借呗,微粒贷等众多服务。互联网金融的架构有别于传统金融系统,互联网金融产品依托于互联网的众多技术特性,主要包括三大主要方面:在互联网浪潮的背景下,传统银行、金融行业原创 2022-06-25 00:54:57 · 11817 阅读 · 0 评论 -
系统架构设计——OpenHarmony系统简介
主要是介绍OpenHarmony 鸿蒙-面向全场景的分布式操作系统的新的技术点和一些新的概念,同时学习OpenHarmony 鸿蒙-面向全场景的分布式操作系统的具体的使用了开发。原创 2021-05-26 10:41:59 · 4590 阅读 · 1 评论 -
系统架构设计——服务追踪设计
在一体化架构中,单次请求的所有的耗时日志,都被记录在一台服务器上,而在微服务的场景下,单次请求可能跨越多个 RPC 服务,这就造成了,单次的请求的日志会分布在多个服务器上。于是,你给你的代码增加了大量的日志,来排查下单操作缓慢的问题。首先,A 服务在发起 RPC 请求服务 B 前,先从线程上下文中获取当前的 traceId 和 spanId,然后,依据上面的逻辑生成本次 RPC 调用的 spanId,再将 spanId 和 traceId 序列化后,装配到请求体中,发送给服务方 B。原创 2022-02-02 23:51:55 · 2281 阅读 · 0 评论 -
系统设计——JAVA开发规范设计
本博文将对阿里巴巴java开发手册进行详细的解释和说明,帮助的大家更好的理解java开发规范。更好实践在自己的项目中,让自己的编码养成一个好习惯,努力成为一名优秀的程序员。原创 2023-09-20 08:47:45 · 520 阅读 · 0 评论 -
系统设计——幂等性与解决方案
简单的说就是调用方在调用接口的时候先向后端请求一个全局 ID(Token),请求的时候携带这个全局 ID 一起请求(Token 最好将其放到 Headers 中), 后端需要对这个 Token 作为 Key,用户信息作为 Value 到 Redis 中进行键值内容校验,如果 Key 存在且 Value 匹配就执行删除命令, 然后正常执行后面的业务逻辑。幂等更多使用的情况是第一次请求不知道结果(比如超时)或者失败的异常情况下,发起多次请求,目的是多次确认第一次请求成功,却不会因多次请求而出现多次的状态变化。原创 2022-05-22 22:38:40 · 812 阅读 · 0 评论 -
系统设计——负载均衡设计
关于“负载均衡”的解释,百度词条里:负载均衡,英文叫Load Balance,意思就是将请求或者数据分摊到多个操作单元上进行执行,共同完成工作任务。负载均衡(Load Balance)建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。目前负载均衡技术大多数是用于提高诸如在Web服务器、FTP服务器和其它关键任务服务器上的Internet服务器程序的可用性和可伸缩性。原创 2023-02-22 17:01:03 · 704 阅读 · 0 评论 -
系统设计——系统鉴权设计
JWT简称JSON Web Token,也就是通过JSON形式作为Web应用中的令牌,用于在各方之间安全地将信息作为JSON对象传输。在数据传输过程中还可以完成数据加密、签名等相关处理。系统中采用JWT的技术来保证整个系统的数据访问的安全性性质。本博文将详细的介绍JWT鉴权服务设计,帮助大家更好的理解和学习JWT原理与使用。原创 2021-08-21 15:18:12 · 1166 阅读 · 2 评论 -
系统设计——API网关设计
摘要你的垂直电商系统在经过微服务化拆分之后,已经运行了一段时间了,系统的扩展性得到了很大的提升,也能够比较平稳地度过高峰期的流量了。不过最近你发现,随着自己的电商网站知名度越来越高,系统迎来了一些“不速之客”,在凌晨的时候,系统中的搜索商品和用户接口的调用量,会有激剧的上升,持续一段时间之后又回归正常。这些搜索请求有一个共同特征是,来自固定的几台设备。当你在搜索服务上加一个针对设备 ID 的限流功能之后,凌晨的高峰搜索请求不见了。但是不久之后,用户服务也出现了大量爬取用户信息的请求,商品接口出现了大量爬原创 2022-02-03 00:56:04 · 1088 阅读 · 0 评论 -
系统设计——接口压测设计
摘要博文参考原创 2022-02-03 01:00:41 · 149 阅读 · 0 评论 -
系统设计——微服务治理设计
摘要博文参考原创 2022-02-03 00:58:34 · 162 阅读 · 0 评论 -
系统设计——系统容灾备份设计
摘要博文参考原创 2022-02-03 00:57:39 · 318 阅读 · 0 评论 -
系统设计——系统监控服务设计
这就是我们体系化的监控分层,每一个层级都非常重要。一般情况下,当一个问题出现时,较大概率会先暴露在用户端或业务层,比如说,我们的订单量下降了,业务人员和开发人员会先从上到下去逐层检查是在哪里出现了问题,先确定是否哪个接口调用比较慢,哪个服务调用出现延时,再看是否哪个机器负载过高了,然后再进一步往下一个层去看,是否是网络调用不稳定导致。所以,一个好的监控体系,在每个层级都非常重要。二、原创 2022-02-03 00:59:29 · 1791 阅读 · 0 评论 -
系统设计——注册中心设计
摘要服务注册和发现不是一个新的概念,你在之前的实际项目中也一定了解过,只是你可能没怎么注意罢了。比如说,你知道 Nginx 是一个反向代理组件,那么 Nginx 需要知道,应用服务器的地址是什么,这样才能够将流量透传到应用服务器上,这就是服务发现的过程。那么 Nginx 是怎么实现的呢?它是把应用服务器的地址配置在了文件中。这固然是一种解决的思路,实际上,我在早期的项目中也是这么做的。那时,项目刚刚做了服务化拆分,RPC 服务端的地址,就是配置在了客户端的代码中,不过,这样做之后出现了几个问题:原创 2022-02-02 23:30:58 · 241 阅读 · 2 评论 -
系统设计——数据库设计
摘要我们用池化技术解决了数据库连接复用的问题,这时,你的垂直电商系统虽然整体架构上没有变化,但是和数据库交互的过程有了变化,在你的 Web 工程和数据库之间增加了数据库连接池,减少了频繁创建连接的成本,从上节课的测试来看性能上可以提升 80%。现在的架构图如下所示:此时,你的数据库还是单机部署,依据一些云厂商的Benchmark 的结果,在4 核 8G 的机器上运 MySQL 5.7 时,大概可以支撑 500 的 TPS 和 10000 的 QPS。这时,运营负责人说正在准备双十一活动,并且公司原创 2022-02-02 13:21:01 · 1115 阅读 · 0 评论 -
系统设计——系统微服务化设计
摘要现在,你的系统运行稳定,好评不断,每天高峰期的流量,已经达到了 10000/s 请求,DAU 也涨到了几十万。CEO 非常高兴,打算继续完善产品功能,以便进行新一轮的运营推广,争取在下个双十一可以将 DAU 冲击过百万。这时,你开始考虑,怎么通过技术上的优化改造,来支撑更高的并发流量,比如支撑过百万的 DAU。于是,你重新审视了自己的系统架构,分析系统中有哪些可以优化的点。目前来看,工程的部署方式还是采用一体化架构,也就是说所有的功能模块,比方说电商系统中的订单模块、用户模块、支付模块、物流原创 2022-02-02 22:52:23 · 4407 阅读 · 1 评论 -
高并发系统设计——数据库连接池化技术
摘要如何减少频繁创建数据库连接的性能损耗?一天,公司 CEO 把你叫到会议室,告诉你公司看到了一个新的商业机会,希望你能带领一名兄弟,迅速研发出一套面向某个垂直领域的电商系统。在人手紧张,时间不足的情况下,为了能够完成任务,你毫不犹豫地采用了最简单的架构:前端一台 Web 服务器运行业务代码,后端一台数据库服务器存储业务数据。这个架构图是我们每个人最熟悉的,最简单的架构原型,很多系统在一开始都是长这样的,只是随着业务复杂度的提高,架构做了叠加,然后看起来就越来越复杂了。再说回我们的垂直电商系统,系统一开原创 2022-02-01 12:25:29 · 2600 阅读 · 0 评论 -
高并发系统设计——RPC框架的技术选型
摘要服务拆分单独部署后,引入的服务跨网络通信的问题;在拆分成多个小服务之后,服务如何治理的问题。如果想要解决这两方面问题,你需要了解,微服务化所需要的中间件的基本原理,和使用技巧,那么本节课,我会带你掌握,解决第一点问题的核心组件:RPC 框架。你的垂直电商系统的 QPS 已经达到了每秒 2 万次,在做了服务化拆分之后,由于我们把业务逻辑,都拆分到了单独部署的服务中,那么假设你在完成一次完整的请求时,需要调用 4~5 次服务,计算下来,RPC 服务需要承载大概每秒 10 万次的请求。那么,你该如何设原创 2022-02-02 23:08:39 · 2351 阅读 · 0 评论 -
高并发系统设计——“三高”解决方案
摘要提到互联网系统设计,你可能听到最多的词儿就是“三高”,也就是“高并发”“高性能”“高可用”,它们是互联网系统架构设计永恒的主题。在前两节课中,我带你了解了高并发系统设计的含义,意义以及分层设计原则,接下来,我想带你整体了解一下高并发系统设计的目标,然后在此基础上,进入我们今天的话题:如何提升系统的性能?一、高并发系统设计的三大目标高并发,是指运用设计手段让系统能够处理更多的用户并发请求,也就是承担更大的流量。它是一切架构设计的背景和前提,脱离了它去谈性能和可用性是没有意义的。很显然嘛,你在每原创 2022-02-01 11:48:31 · 1534 阅读 · 0 评论 -
高并发系统设计——系统架构分层原则
摘要在系统从 0 到 1 的阶段,为了让系统快速上线,我们通常是不考虑分层的。但是随着业务越来越复杂,大量的代码纠缠在一起,会出现逻辑不清晰、各模块相互依赖、代码扩展性差、改动一处就牵一发而动全身等问题。这时,对系统进行分层就会被提上日程,那么我们要如何对架构进行分层?架构分层和高并发架构设计又有什么关系呢?一、什么是分层架构软件架构分层在软件工程中是一种常见的设计方式,它是将整体系统拆分成 N 个层次,每个层次有独立的职责,多个层次协同提供完整的功能。我们在刚刚成为程序员的时候,会被“教育”说原创 2022-02-01 09:38:08 · 1025 阅读 · 0 评论 -
高并发系统设计——高并发系统通用方案
摘要不可否认的是,目前的经济形势不好,很多公司(比如阿里、腾讯、今日头条)一方面在减少招聘的人员数量,另一方面也期望花费了人力成本之后可以给公司带来更大的价值。那么对于公司来说,仅仅懂得 CRUD 的程序员就不如有高并发系统设计经验的程序员有吸引力了。所以当你去面试时,面试官会要求你有高并发设计经验,有的面试官会询问你的系统在遭遇百万并发时可能有哪些瓶颈点,以及有什么优化思路等问题,为的就是检验你是否真的了解这方面的内容。那么进不了大厂,没有高并发的场景,这些设计的经验又要从何处来呢?通过本系列博文我将原创 2022-02-01 09:22:24 · 1252 阅读 · 0 评论 -
系统架构设计——高可用架构
系统的高可用架构网站的可用性(Availability)描述网站可有效访问的特性(不同于另一个网站运营指标:Usability,通常也被译作可用性,但是后者强调的是网站的有用性,即对最终用户的使用价值),相比于网站的其他非功能特性,网站的可用性更牵动人们的神经,大型网站的不可用事故直接影响公司形象和利益,许多互联网公司都将网站可用性列入工程师的绩效考核,与奖金升迁等利益挂钩。网站可用性的度量与考核网站的页面能完整呈现在最终用户面前,需要经过很多个环节,任何一个环节出了问题,都可能导致网站页面不可原创 2020-12-01 10:42:59 · 1094 阅读 · 0 评论 -
系统架构设计——伸缩性架构
伸缩性架构所谓网站的伸缩性是指不需要改变网站的软硬件设计,仅仅通过改变部署的服务器数量就可以扩大或者缩小网站的服务处理能力。京东网( www.360buy.com )在2011年年末的图书促销活动中,由于优惠幅度大引得大量买家访问,结果导致网站服务不可用,大部分用户在提交订单后,页面显示“Serviceis too busy”。当天晚上,京东网老板刘强东在微博发布消息称,已购买多台服务器以增加交易处理能力,第二天继续促销一天。结果第二天,用户在提交订单后,页面继续是“Service is too b原创 2020-12-02 10:29:49 · 618 阅读 · 0 评论 -
系统架构设计——高安全系统架构
高安全系统架构从互联网诞生起,安全威胁就一直伴随着网站的发展,各种 Web攻击和信息泄露也从未停止。2011年中国互联网领域爆出两桩比较大的安全事故,一桩是新浪微博遭XSS攻击,另一桩是以CSDN为代表的多个网站泄露用户密码和个人信息。特别是后者因为影响人群广泛,部分受影响网站涉及用户实体资产和交易安全,一时成为舆论焦点。让我们先回顾一下这两起事故。2011年6月28日,许多微博用户发现自己“中毒”,自动关注了一个叫hellosamy的用户,并发布含有病毒的微博,粉丝点击后微博再度扩散,短时间内原创 2020-12-03 15:36:29 · 580 阅读 · 0 评论 -
系统架构设计——大型网站架构模式
大型网站架构模式关于什么是模式,这个来自建筑学的词汇是这样定义的:“每一个模式描述了一个在我们周围不断重复发生的问题及该问题解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复工作”。模式的关键在于模式的可重复性,问题与场景的可重复性带来解决方案的可重复使用。也许互联网产品不是随便复制就能成功的,创新的产品更能为用户创造价值但是网站架构却有一些共同的模式,这些模式已经被许多大型网站一再验证,通过对这些模式的学习,我们可以掌握大型网站架构的一般思路和解决方案,以指导我们的架构设计。网站架构模原创 2020-11-29 22:15:25 · 646 阅读 · 0 评论 -
系统架构设计——大型网站核心架构要素
大型网站核心架构要素关于什么是架构,一种比较通俗的说法是“最高层次的规划,难以改变的决定”,这些规划和决定奠定了事物未来发展的方向和最终的蓝图。具体到软件架构,维基百科是这样定义的:“有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计”。系统的各个重要组成部分及其关系构成了系统的架构,这些组成部分可以是具体的功能模块,也可以定非功能i仅l一人宋,他相互关系组成一个整体,共同构成了软件系统的架构。一般说来,除了当前的系统功能需求外,软件架构还需要关注性能、可用性、伸缩性、扩展性和安全原创 2020-11-30 10:15:36 · 361 阅读 · 0 评论 -
系统架构设计——海量日志数据采集架构
摘要针对于系统集群节点的管理,需要通过系统集群节点的底层获取日志数据来实现对集群节点的管理和监控,将集群节点的数据进行采集,通过利用大数据分析系统和神经网络的算法,实现对集群节点的预测以及系统扩容,缩容等业务的扩展。在整个系统中日志数据的采集对整个系统至关重要。因此本文讲详细介绍有关业界的常见的日志数据采集架构原理。通同时讲在个人github上建立一套完整的日志采集系统,供大家参考和学习,同时讲详细的讲述个人项目的整体架构和实现的原理。github网址为:https://github.com/24626原创 2021-08-17 17:39:37 · 2152 阅读 · 0 评论 -
系统架构设计——秒杀系统设计
秒杀大家都不陌生。自2011年首次出现以来,无论是双十一购物还是 12306 抢票,秒杀场景已随处可见。简单来说,秒杀就是在同一时刻大量请求争抢购买同一商品并完成交易的过程。从架构视角来看,秒杀系统本质是一个高性能、高一致、高可用的三高系统。而打造并维护一个超大流量的秒杀系统需要进行哪些关注。博文主要介绍的有关于秒杀系统的设计和底层实现原理。原创 2022-07-13 14:00:14 · 5068 阅读 · 4 评论