
架构微学堂
文章平均质量分 81
系统架构设计案例
天秤座的架构师
非著名架构师
展开
-
Maven间接依赖场景的仲裁机制
Maven的源码地址我是怎么分析的本人在本地针对SpringBoot,做多轮测试。在根目录下执行mvn clean package即可!mvn clean org.apache.maven.plugins:maven-dependency-plugin:3.3.0:tree -Dverbose=true 会帮助分析到具体的节点。另外就是尝试在源码中找到这里的实现,这样更能加深理解!常用的分析命令0.mvn clean package -DSkipTest 直接进行打包,进行结果分析。原创 2022-10-26 15:05:21 · 23341 阅读 · 0 评论 -
一篇好的技术方案文档需要注意的细节
在架构方案或技术方案评审前,想必大家否非常的苦恼,来来回回修改许多版后,依旧无法表达方案的意图,这里就分享一下常用的一些技术方案和架构方案的招式。我们为什么需要写技术方案?原创 2022-10-26 14:59:13 · 23790 阅读 · 0 评论 -
高德打车构建可观测性系统实践
一 写在前面互联网工程的高速发展,分布式、微服务、容器化架构的流行,互联网已全面进入云原生时代。构建系统的方式由最初的单体大应用演变为分布式架构,一台服务器可能仅存几小时甚至几分钟,这种复杂性大大增加了把系统运行状态可视化的难度。高德打车业务的发展历程也不例外,同样经历了从单体大应用到服务化拆分的过程,庞大的应用体系和架构的不断升级,保障了多个节假日出行高峰的稳定,业务仍在持续快速的发展中,如何保障这套庞大又复杂的系统持续高性能、高可用、高可控?构建360度无死角的多维度可观...原创 2021-12-13 11:13:17 · 24562 阅读 · 0 评论 -
微服务架构服务限流方案详解
话说在 Spring Cloud Gateway 问世之前,Spring Cloud 的微服务世界里,网关一定非 Netflix Zuul 莫属。但是由于 Zuul 1.x 存在的一些问题,比如阻塞式的 API,不支持 WebSocket 等,一直被人所诟病,而且 Zuul 升级新版本依赖于 Netflix 公司,经过几次跳票之后,Spring 开源社区决定推出自己的网关组件,替代 Netflix Zuul。从 18 年 6 月 Spring Cloud 发布的 Finchley 版本开始,Spring原创 2021-11-07 13:10:14 · 24848 阅读 · 1 评论 -
微服务架构体系
架构的演进这种东西有点信雅达,没什么绝对标准 单体应用:在第一阶段的单体应用很好理解。 垂直应用:接着随着业务量增大, 将应用拆成互不相干的几个应用,Web框架(MVC)是关键。 这一步,前后端分离、使用缓存、数据库和应用服务分离都会做,但服务间是独立的无法调用,且可能存在重复代码。 分布式应用:垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务。这时用于提高业务复用及整合的分布式服务框架(RPC)是关键。 集群...原创 2021-11-07 12:44:23 · 24567 阅读 · 0 评论 -
电商系统中微服务体系中的分层设计和领域划分
说明:在Java生鲜电商平台中,微服务体系的分层设计与领域划分应该怎么样呢?看标题感觉这个东西很理论,比起“高并发、多线程”、“分布式CAP、一致性、Paxos”、“高可用SLA”等具体的干货技术点,软件体系知识显得很“湿”,似乎人人都有自己的认识,但又很少有人能说完整,有一点可以确定的是,如果你未来需要独立设计一个复杂的系统中台,并使之未来能快速应对各种需求变化的话,科学合理的领域划分和边界界定需要我们“处女座级”的坚持下去,这对防止人力失控、减少项目烂尾很有帮助。合理的界定了边界后,即便某个微服务很原创 2021-11-07 12:27:26 · 24555 阅读 · 0 评论 -
面向领域的微服务架构
近来,一些关于面向服务架构的话题,特别是针对微服务架构的弊端这个话题上进行了大量的讨论。虽然在几年前,微服务架构受到很多人的青睐,因为它们提供了许多好处,如独立部署的灵活性、明确的所有权、系统稳定性的改善以及更好的分离问题等优点。但是不久,就开始有人吐槽微服务会大幅增加系统复杂性,有时甚至连一些简单的功能都难以构建。随着Uber发展,我们目前拥有了大约2200个关键的微服务,并且也亲身经历了这些权衡。在过去的两年里,Uber一直在试图降低微服务的复杂性的同时仍然保持着微服务架构的优势。我们希望通过这原创 2021-11-07 08:23:47 · 24165 阅读 · 0 评论 -
阿里资深架构师推荐 -- 如果正确的开启领域驱动设计
简介:什么是领域驱动设计?传统分层架构在实际开发中存在哪些问题?业务开发人员如何设计并搭建自己的领域模型?阿里文娱技术专家战獒将为大家一一解答,并分享文娱在领域驱动设计上的实践。一 什么是领域驱动设计领域驱动设计的概念是2004年Evic Evans在他的著作《Domain-Driven Design : Tackling Complexity in the Heart of Software》(中文译名:领域驱动设计:软件核心复杂性应对之道)中提出的,从领域驱动设计提出距今已经有15年的时间.原创 2021-09-19 12:06:54 · 24717 阅读 · 0 评论 -
开发复杂业务系统,有哪些设计思路
简介:结合DDD和阿里业务中台建设经验,沉淀复杂业务系统的开发和架构思路最近对交易业务系统进行电商中台化的设计和优化工作中遇到一些问题,在这里结合领域驱动设计和阿里业务中台的一些理解,分享一下架构方面的思考和体会。做技术方案,核心是下面几个问题:1 做什么?- 产品需求2 业务上怎么做?- 业务文档3 技术上怎么做?- 技术方案4 代码怎么实现?- 落地实现明确了这几个问题,可以处理大部分日常需求开发,如果是比较复杂的业务系统,就需要拆解的更精细...原创 2021-09-19 09:32:43 · 24969 阅读 · 0 评论 -
重构的艺术
1. 何谓重构?两个定义:名词形式 重构(名词):对软件内部的一种太纵横,目的是在不改变软件可观察的前提下,提高其可理解性,降低其修改成本。 动词形式 重构(动词):使用一系列的重构手法,在不改变软件可观察的行为的前提下,调整其结构。上面是重构的学术解释,相信一些大神是可以直接一步到位的领略它的意思。我比较喜欢通俗易懂的解释:你要问我“重构就只是整理代码吗?” 在某种角度来说 还真是。 but ! 重构肯定有其独到的地方:它还提供一种 更高效 且 受控的 代码整理技术。划重点哈!作原创 2021-09-19 09:27:23 · 24451 阅读 · 0 评论 -
系统架构中常见问题及解决方案
1.概述软件是关乎于人的行业,而人依靠文化来长久维系。这个行业很多问题的根源来自以下两个方面:维系人的文化 扮演角色的人2.波动的水纹当我们在湖中投入一颗石子时,一道道波纹总会被传播很远……2.1 现象同一产品版本繁多,版本变动频繁。不同版本之间甚至存在不一致,一个版本的变动可能影响到其他版本的正常功能。 项目需求难以满足。产品疲于应付不同项目的需求。 产品开发人员被抽调出来为不同的项目特定需求进行开发。同一产品组不得不同时维护多个不同差异的版本,每一次的变动都存在着影响不同原创 2021-09-19 09:08:53 · 26506 阅读 · 0 评论 -
系统架构中,架构师如何选择自顶向下还是自底向上的架构方式?
每个软件架构师,开发经理和开发人员都很可能遇到过软件设计和开发中“自上之下vs.自下而上”的争论。正确的答案其实是,这里并没有单一的最佳方案。 应用是用自上而下和自下而上的两种方案之一来构建,每种方式的支持者和另一方的支持者一直争论不休。但是决定企业应该采取哪一种应用开发战略要求检视需求和资源,并且考虑到应用可能的变化,理解应用设计上这两种不同的方案以及各自减少风险的所需步骤。模块化编程理念和企业架构都影响着软件开发,使其从上开始,从业务需求和预期收益...原创 2021-09-19 09:03:35 · 25015 阅读 · 0 评论 -
架构设计本质-架构思维
前言:本篇文章结合多数人在工作中的模块开发,架构设计情况,以及相关权威性文章和书籍,总结下如何在开发过程中,慢慢养成架构思维,共设计以下几个方面:正文:简单介绍下架构设计:软件架构是一个系统的草图,描述了组成架构的组件及各个组件之间的关系,组件和环境之间的关系,以及设计组件的原则,组件可以是子系统,模块,类,方法等。架构设计是架构决策的过程,设计系统分解,接口定义,通信协议定义,交互关系和集成方式确定。架构决策是指在架构设计中统筹全局并作出决定,权衡,取舍,比如将系统拆分为几个子系统,子..原创 2021-09-14 06:25:11 · 24682 阅读 · 0 评论 -
消息队列RocketMQ--定时消息投递
import com.aliyun.openservices.ons.api.Message;import com.aliyun.openservices.ons.api.ONSFactory;import com.aliyun.openservices.ons.api.Producer;import com.aliyun.openservices.ons.api.PropertyKeyConst;import com.aliyun.openservices.on...原创 2021-09-09 11:02:43 · 25186 阅读 · 0 评论 -
深度剖析 -- 时间轮算法(TimingWheel)是如何实现的?
前言时间轮的应用场景很多,在 Netty、Akka、Quartz、ZooKeeper 、Kafka等组件中都存在时间轮的踪影。我们下面讲解的时间轮的实现以JRaft中的为例子进行讲解,因为JRaft这部分的代码是参考Netty的,所以大家也可以去Netty中去寻找源码实现。时间轮用来解决什么问题?如果一个系统中存在着大量的调度任务,而大量的调度任务如果每一个都使用自己的调度器来管理任务的生命周期的话,浪费cpu的资源并且很低效。时间轮是一种高效来利用线程资源来进行批量化调度的...原创 2021-09-09 10:45:41 · 26609 阅读 · 0 评论 -
MySQL深度探险(二)-- MySQL系统架构详解
一逻辑模块组成总的来说,MySQL 可以看成是二层架构,第一层我们通常叫做SQL Layer,在 MySQL 数 据库系统处理底层数据之前的所有工作都是在这一层完成的,包括权限判断,sql 解析,执 行计划优化, query cache 的处理等等;第二层就是存储引擎层,我们通常叫做 Storage Engine Layer,也就是底层数据存取操作实现部分,由多种存储引擎共同组成。所以,以可 用如下一张最简单的架构示意图来表示 MySQL 的基本架构,如图所示:虽...原创 2021-09-08 10:14:33 · 23609 阅读 · 0 评论 -
浅析MySQL事务中的redo与undo
我们都知道事务有4种特性:原子性、一致性、隔离性和持久性,在事务中的操作,要么全部执行,要么全部不做,这就是事务的目的。事务的隔离性由锁机制实现,原子性、一致性和持久性由事务的redo 日志和undo 日志来保证。所以本篇文章将讨论关于事务中的redo和undo的几个问题:redo 日志与undo日志分别是什么? redo 如何保证事务的持久性? undo log 是否是redo log的逆过程?redo logRedo 的类型重做日志(redo log)用来保证事务的持久性,即事务ACI原创 2021-09-07 16:19:02 · 24563 阅读 · 0 评论 -
MySQL深度探险(一)-- MySQL 物理文件组成
一 日志文件1、错误日志:Error Log错误日志记录了MyQL Server运行过程中所有较为严重的警告和错误信息,以及MySQLServer 每次启动和关闭的详细信息。在默认情况下,系统记录错误日志的功能是关闭的, 错误信息被输出到标准错误输出(stderr) ,如果要开启系统记录错误日志的功能,需要在 启动时开启-log-error 选项。错误日志的默认存放位置在数据目录下,以hostname.err 命 名。但是可以使用命令:--log-error[=file_name],修改其存放..原创 2021-09-07 16:02:28 · 24510 阅读 · 0 评论 -
有赞大牛全面解析新零售中台架构
一、背景传统模式下,企业的经营活动会产生大量的业务数据。财务人员需要根据业务数据,进行会计核算,并输出财务数据。通过这些财务数据,企业可以进行财务管理、财务分析、业务决策。但会计核算的工作量非常庞大,大多工作也比较基础、简单,可以被计算机替代。企业每年在基础的核算工作上会花费大量的人力资源,在更重要的财务管理、财务分析、业务决策上无暇顾及。为了解决此类问题,财务中台应运而生。财务中台是业务系统和财务总账系统间的桥梁,通过汇集所有业务数据,进行筛选、核算、转换,自动生成财务数据,并传入财务总账系统,节原创 2021-06-07 21:14:10 · 25497 阅读 · 2 评论 -
架构师到底该不该写代码?
提问:网上有个很有争议的问题“架构师到底该不该写代码?”,您对此怎么看?我旗帜鲜明的认为:架构师应该写代码。做架构设计需要了解业务,任何脱离业务的架构设计都是耍流氓。我比较反对一个公...提问:网上有个很有争议的问题“架构师到底该不该写代码?”,您对此怎么看?我旗帜鲜明的认为:架构师应该写代码。做架构设计需要了解业务,任何脱离业务的架构设计都是耍流氓。我比较反对一个公司成立一个所谓的架构师部门,把控全公司所有的架构师资源。我建议是每个业务研发团队都自己的架构师,深入了解业务,针对业务的特点去...原创 2021-06-02 14:19:37 · 24777 阅读 · 2 评论 -
异地多活与CAP原理
前言今天我给大家分享的主题是阿里游戏异地多活设计的原则和一些理念。对于做技术的同学来说,设计一个异地多活的方案其实是很具有挑战性的和成就感的。异地多活系统确实比较复杂,作为运维的同学来说,如果自己负责维护的系统具备异地多活的能力,那是一件很幸福的事情,因为异地多活确实很强大,在大的公司重要的业务系统都会思考这个问题。在之前参加的技术大会上和技术的朋友做交流的时候,大家都对异地多活挺感兴趣的,对这个话题也是滔滔不绝的讨论,各抒已见。在交流的过程中,我发现普通存在两个问题: 都觉得异地多活方原创 2021-05-29 11:14:07 · 24660 阅读 · 2 评论 -
微服务之注册中心
在分布式系统里的注册中心。原理是将部署服务的机器地址记录到注册中心,服务消费者在有需求的时候,只需要查询注册中心,输入提供的服务名,就可以得到地址,从而发起调用。注册中心原理在微服务架构下,主要有三种角色:服务提供者(RPC Server)、服务消费者(RPC Client)和服务注册中心(Registry),三者的交互关系请看下面这张图,我来简单解释一下。RPC Server 提供服务,在启动时,根据服务发布文件 server.xml 中的配置的信息,向 Registry 注册..原创 2021-05-26 17:25:35 · 26493 阅读 · 2 评论 -
基于CAP模型设计企业级真正高可用的分布式锁
1.CAP定律剖析2000年Eric Brewer教授提出CAP猜想,2年后CAP猜想被Seth Gilbert和Nancy Lynch从理论上证明。CAP是Consitency(强一致性)、Availability(可用性)、Partition tolerance(网络分区容忍性)三个不同维度的组合体,如图1所示。 图1 CAP定律在分布式系统中,CAP定律中的三者只能同时满足二者(如图1所示):CP、AP、AC模型。进一步分析,AC模型并不...原创 2021-05-26 16:19:11 · 24695 阅读 · 0 评论 -
如何设置高并和高可用场景的线程池的核心线程数
在业务驱动引擎中有这样一个场景,需要处理千万级别的数据的一个批处理算法去触发调度任务的执行,这个时候就需要使用多线程去处理。多线程代码: /** * 共享线程池 * @return */ @Bean("threadPoolTaskExecutor") public ThreadPoolTaskExecutor threadPoolTaskExecutor() { ThreadPoolTaskExecutor thre.原创 2021-05-25 10:01:01 · 24771 阅读 · 0 评论 -
JMM简介
Java的内存模型JMM(Java Memory Model)JMM主要是为了规定了线程和内存之间的一些关系。根据JMM的设计,系统存在一个主内存(Main Memory),Java中所有实例变量都储存在主存中,对于所有线程都是共享的。每条线程都有自己的工作内存(Working Memory),工作内存由缓存和堆栈两部分组成,缓存中保存的是主存中变量的拷贝,缓存可能并不总和主存同步,也就是缓存中变量的修改可能没有立刻写到主存中;堆栈中保存的是线程的局部变量,线程之间无法相互直接访问堆栈中的变量。JM原创 2021-05-21 13:44:32 · 23481 阅读 · 0 评论 -
2021-05-17
一、概述不知道大家发现没有,相比前几届春晚,《2021年春节联欢晚会》的视觉效果可谓焕然一新,很多节目都可以看到新科技的东西,比如AR、XR、电影特效技术等将现实舞台上无法完成的效果精彩呈现,融通虚拟空间与现实世界。相对于一般的AR场景,今年春晚作品在AR创作上更为复杂、精细。而XR技术打造了多场景及空间转场变化,让观众有移步换景、身临其境的沉浸式体验。加之电影特效技术的运用,为电视机及电脑、手机前的观众带来一场突破感官体验的惊喜之旅。很多人已经听过AR技术,它是一种现实增强技术。不过相比于AR原创 2021-05-17 16:04:57 · 24111 阅读 · 0 评论 -
OkHttp基础概念解释
最近在整理Android常用第三方框架相关的东西,说道Android的框架,无外乎就是Android开发中常见的网络、图片缓存、数据交互、优化、页面等框架,其中网络作为一个基础部分,我相信大家更多的是使用OkHttp,而在长连接中有Socket和webSocket等,今天给大家总结下OkHttp相关的内容,部分参考网络资源。OkHttp简介OkHttp作为时下Android最火的Http第三方库可以说被大多数的Android客户端程序所使用,Retrofit底层也是使用OkHttp,与Volley等原创 2021-05-17 15:47:51 · 25329 阅读 · 0 评论 -
如何成为优秀的架构师
1、软件架构的定义:软件架构(Software Architecture)也称之为软件体系结构,它是一组有关如下要素的重要决策:软件系统的组织,构成系统的结构化元素,接口和它们相互协作的行为的选择,结构化元素和行为元素组合成粒度更大的子系统方式的选择,以及指导这一组织(元素及其接口、协作和组合方式)的架构风格的选择。换句话说,软件架构实际上是对系统整体结构设计的刻划,系统架构师是做全局的、整体的把握工作。架构的组成与决策是架构设计的两个基本概念。架构=>蓝图+规则+解决方案软件架构是一个认识事物的原创 2021-04-29 15:15:03 · 23501 阅读 · 0 评论 -
同步钉钉组织架构和人员信息到本地Ldap
最近新系统需要打通人员的组织结构和账号信息,A系统自建的用户体系而B系统是使用的Ldap账号体系,目前要整合账号体系把钉钉的人员组织架构同步到Ldap中,相关的内部系统都是基于OpenLdap进行身份验证,如果能和钉钉结合起来,会更好。与钉钉的组织架构进行集成,可以想到的方法有如下:采用钉钉的身份验证方式,集成到jira、confluence、gitlab等的验证体系中,这个可能涉及到多个应用系统的修改 - 后面可以验证下同步钉钉的组织架构到本地的ldap,但是密码过不来,所以验证的时候,得看看原创 2021-04-29 15:14:18 · 27035 阅读 · 0 评论 -
SaaS和PaaS,是中小企业上云的唯一选项吗?
工信部印发《中小企业数字化赋能专项行动方案》,提出十三项重点任务。其中提到,助推中小企业上云用云,引导数字化服务商面向中小企业推出云制造平台和云服务平台,支持中小企业设备上云和业务系统向云端迁移,帮助中小企业从云上获取资源和应用服务,满足中小企业研发设计、生产制造、经营管理、市场营销等业务系统云化需求。由此可见,中小企业上云已经成为国家级战略,即将迎来跨越式发展。那么,企业究竟该如何开启自己的上云之路呢?IaaS、PaaS和SaaS业界专家表示,云计算在技术上可以分为三种模式,IaaS、PaaS和S原创 2021-04-29 10:21:43 · 23851 阅读 · 0 评论 -
Docker简介
一、Docker简介1.1 什么是dockerdocker的英文意思是 码头工人,意思就是搬运东西的意思,其实这和docker的特点是一样的,docker提供的就是一种容器化搬运东西(我们的软件、程序)的过程。docker自己本来是运行在操作系统上一个程序软件,它会提供一个容器环境,使我们的程序独立地运行在容器中,所以说,官方给docker起的这个名字也真是应景。就连图标也是这么生动形象,富有诗意,让人浮想联翩。。。。(这是去幼儿园的车,还没有拐进大学城)试想下边这样一个场景:当我们原创 2021-04-29 09:38:12 · 30250 阅读 · 4 评论 -
Soul高性能服务网关搭建指南
<?xml version="1.0" encoding="UTF-8"?><!-- ~ Licensed to the Apache Software Foundation (ASF) under one or more ~ contributor license agreements. See the NOTICE file distributed with ~ this work for additional information regarding copyri.原创 2021-04-26 13:57:26 · 25015 阅读 · 1 评论 -
阿里资深架构师推荐--高性能网关Soul如何设计默认的系统参数?
前言1、查了许多资料,整合成一个通用的RedisTemplate。2、推荐Redis可视化工具 Another Redis DeskTop Manager,免费好用,人机交互性能好。配置当前版本<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> ...原创 2021-04-26 13:51:26 · 24496 阅读 · 0 评论 -
Soul网关发布里程碑的2.3.0版本抢先看
soul-admin(dashboard)admin是整个网关的控制面板,掌管所有的流量,规则的匹配。 整合shior框架,完成了用户按钮级别的权限控制。 模板化插件,让用户无需感知前端页面,只专注于数据的配置。 admin整个后端的国际化,支持中英文切换。 新增支持H2来存储数据。 admin界面的美观优化(表格,按钮)。 新增单元测试,覆盖率达到百分之七十。 soul网关插件插件新增 新增GRPC插件,全面支持GRPC协议。原创 2021-04-17 08:38:33 · 24340 阅读 · 0 评论 -
服务限流常用的几种算法
限流、熔断、降级,是我们经常听到的三个名词,但对三者的区别和关系,很多人傻傻分不清楚。那我会根据我的理解,尽量讲明白三者的区别,以及如何落地应用到实际项目中。我们知道,互联网系统,流量的突然暴涨很常见,有些场景是可以预见的,比如双11、双12活动;而有些场景则是不可预见的,比如一个明星的突然官宣。如果对高流量不做任何保护措施,当请求超过服务器承载极限的时候,系统就会奔溃,导致服务不可用。那么,在高流量的场景下,如何保证服务集群整体稳定和可用性呢?主要有两个方向,一是通过资源扩容来提升系统整体的...原创 2021-04-13 10:33:19 · 25084 阅读 · 0 评论 -
基于Etcd的强一致性的分布式锁的实现方式!
分布式锁关于为什么要有「分布式锁」这个东西,欢迎阅读我的zk分布式锁的实现,介绍了单机高并发、分布式高并发的解决方案:用ZooKeeper实现分布式锁这里再切入本例将使用的场景模拟:商品秒杀,或者说高并发下,对于商品库存扣减操作。我用一个SpringBoot小项目模拟一下该操作。本例用到的技术栈:SpringBoot Redis etcd在正式肝代码之前,先来对etcd分布式锁实现的机制和原理做一个了解。etcd分布式锁实现的基础机制Lease机制租约机制(「TTL」,原创 2021-03-29 18:35:25 · 24375 阅读 · 0 评论 -
高并发衡量指标及解决方案
1、什么是高并发高并发是互联网分布式系统架构设计中必须考虑的因素之一,就是通过设计保证系统可以并行处理很多请求。2、高并发衡量指标响应时间:系统对请求做出响应的时间,即一个http请求返回所用的时间吞吐量:单位时间内处理的请求数量QPS:每秒可以处理的请求数并发用户数:同时承载正常使用系统功能的用户数量,即多少人同时使用,系统还能正常运行的用户数量3、高并发解决办法1)提升服务器的配置2)负载均衡,加服务器,前置代理服务器nginx、apache等等3)数据库查询优化,读写分离.原创 2021-03-29 17:08:28 · 24929 阅读 · 0 评论 -
技术选型: 流批处理的技术原型分析
为何放弃数据库,Hive和Spark,偏偏选择Flink?最近接手了一个融合日志的服务. 经过梳理, 我认为当前服务的设计上存在缺陷. 与 Leader 开会讨论后, 决定重新进行技术方案调研, 最终我们选择使用 Flink 重构了该服务。技术选型: 为什么批处理我们却选择了 Flink?最近接手了一个融合日志的服务. 经过梳理, 我认为当前服务的设计上存在缺陷. 与 Leader 开会讨论后, 决定重新进行技术方案调研, 最终我们选择使用 Flink 重构了该服务.目前重构后的服务已成功经原创 2021-03-29 16:55:05 · 23403 阅读 · 0 评论 -
资深架构师推荐--高并发的理解及指标的衡量
一 前言高并发,几乎是每个程序员都想拥有的经验。原因很简单:随着流量变大,会遇到各种各样的技术问题,比如接口响应超时、CPU load升高、GC频繁、死锁、大数据量存储等等,这些问题能推动我们在技术深度上不断精进。在过往的面试中,如果候选人做过高并发的项目,我通常会让对方谈谈对于高并发的理解,但是能系统性地回答好此问题的人并不多,大概分成这样几类:1、对数据化的指标没有概念:不清楚选择什么样的指标来衡量高并发系统?分不清并发量和QPS,甚至不知道自己系统的总用户量、活跃用户量...原创 2021-03-15 08:53:55 · 24694 阅读 · 0 评论 -
Nacos 服务注册与发现原理分析
Nacos 另一个非常重要的特性就是服务注册与发现,说到服务的注册与发现相信大家应该都不陌生,在微服务盛行的今天,服务是非常重要的,而在 Nacos 中服务更被称为他的一等公民。Nacos 支持几乎所有主流类型的 “服务” 的发现、配置和管理。了解过 Dubbo 的同学,应该对 Dubbo 的架构非常熟悉,最经典的一张架构图如下所示:图中的6个步骤的含义解释如下:0、服务容器负责启动,加载,运行服务提供者。1、服务提供者在启动时,向注册中心注册自己提供的服务。2、服务消费..原创 2021-03-04 09:27:03 · 26494 阅读 · 3 评论