architect
文章平均质量分 84
xinyuan_java
这个作者很懒,什么都没留下…
展开
-
分布式链路监控系统
分布式链路监控系统转载 2022-12-29 17:36:28 · 848 阅读 · 0 评论 -
全链路日志中间件对比
全链路日志中间件对比转载 2022-12-29 17:09:31 · 461 阅读 · 0 评论 -
开源堡垒机系统
开源堡垒机系统转载 2022-12-29 15:26:48 · 2273 阅读 · 0 评论 -
Kafka消费组rebalance原理
Kafka消费组rebalance原理转载 2022-12-29 13:15:34 · 1055 阅读 · 0 评论 -
使用avro序列化和反序列化
avro 入门原创 2022-12-15 19:22:34 · 343 阅读 · 0 评论 -
Apache 架构师的 30 条设计原则
Apache 架构师的 30 条设计原则转载 2022-05-13 10:51:11 · 113 阅读 · 0 评论 -
一致性哈希算法原理
一致性Hash算法背景 一致性哈希算法在1997年由麻省理工学院的Karger等人在解决分布式Cache中提出的,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简单哈希算法带来的问题,使得DHT可以在P2P环境中真正得到应用。 但现在一致性hash算法在分布式系统中也得到了广泛应用,研究过memcached缓存数据库的人都知道,memcached服务器端本身不提供分布式cache的一致性,而是由客户端来提供,具体在计算一致性has转载 2022-03-10 14:42:29 · 110 阅读 · 0 评论 -
系统困境与软件复杂度:为什么我们的系统会如此复杂?
读 A Philosophy of Software Design 有感,软件设计与架构复杂度,你是战术龙卷风吗?01前言Aliware有一天,一个医生和一个土木工程师在一起争论“谁是世界上最古老的职业”。医生说:“上帝用亚当的肋骨造出了夏娃,这是历史上第一次外科手术,所以最古老的职业应该是医生”,土木工程师说:“在创世纪之前,上帝从混沌中创造了天堂与人间,这是更早之前的一次土木作业,所以最古老的职业应该是土木工程”。这时软件工程师拖着键盘走出来说,“那你认为,是谁创造了那片混沌?”..转载 2022-02-22 11:07:11 · 198 阅读 · 0 评论 -
分布式任务调度平台XXL-JOB
官网: https://www.xuxueli.com/xxl-job/XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。安装:1 初始化“调度数据库” /xxl-job/doc/db/tables_xxl_job.sql 如果mysql做主从,调度中心集群节点务必强制走主库;2 项目(发布 prod 配置文件) 2.1 调度中心集群 (admin) 作用:统一管理任务调度平台...原创 2021-04-13 14:52:30 · 364 阅读 · 0 评论 -
rocketmq-学习
官网: http://rocketmq.apache.org/入门: http://rocketmq.apache.org/docs/quick-start/gtihub: https://github.com/apache/rocketmq中文文档: https://github.com/apache/rocketmq/tree/master/docs/cn代码样例: https://github.com/apache/rocketmq/blob/master/docs/cn/Rocket转载 2021-04-01 14:10:29 · 297 阅读 · 0 评论 -
选型必看:RabbitMQ 七战 Kafka,差异立现
作为一个有丰富经验的微服务系统架构师,经常有人问我,“应该选择RabbitMQ还是Kafka?”。基于某些原因, 许多开发者会把这两种技术当做等价的来看待。的确,在一些案例场景下选择RabbitMQ还是Kafka没什么差别,但是这两种技术在底层实现方面是有许多差异的。不同的场景需要不同的解决方案,选错一个方案能够严重的影响你对软件的设计,开发和维护的能力。这篇文章会先介绍RabbitMQ和Apache Kafka内部实现的相关概念。紧接着会主要介绍这两种技术的主要不同点以及他们各自的优缺..转载 2021-03-31 17:13:28 · 198 阅读 · 0 评论 -
如何在业务逻辑当中优雅引入重试机制
为什么要引入重试机制我们首先看看正常的业务系统交互流程,就像下面图中所示一样,我们自己开发的系统通过HTTP接口或者通过RPC去访问其他业务系统,其他系统在没出现任何问题的情况下会返回给我们需要的数据,状态为success。但大家在日常的开发工作当中应该碰到过不少这样的问题:自己应用因为业务需求需要调其他关联应用的接口或二方包,而其他应用的接口稳定性不敢过分恭维,老是出一些莫名奇妙的幺蛾子,比如由于接口暂时升级维护导致的短暂不可用,又或者网络抖动因素导致的单次接口请求失败。...转载 2021-03-23 19:37:26 · 298 阅读 · 0 评论 -
SOLID:面向对象设计的五个基本原则
在程序设计领域,SOLID 是由罗伯特·C·马丁在 21 世纪早期引入的记忆术首字母缩略字,指代了面向对象编程和面向对象设计的五个基本原则。当这些原则被一起应用时,能够使得一个程序员开发一个容易进行维护和扩展的系统变得更加可能。SOLID 是以下五个单词的缩写: Single Responsibility Principle(单一职责原则) Open Closed Principle(开闭原则) Liskov SubstitutionPrinciple(里氏替换原则) ..转载 2021-03-23 19:15:06 · 392 阅读 · 0 评论 -
Redisson
Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务。其中包括(BitSet,Set,Multimap,SortedSet,Map,List,Queue,BlockingQueue,Deque,BlockingDeque,Semaphore,Lock,AtomicLong,CountDownLatch,Publish / Subscribe,Bloo...原创 2021-03-17 16:54:04 · 245 阅读 · 0 评论 -
Spring Boot 解决跨域问题的 3 种方案
前后端分离大势所趋,跨域问题更是老生常谈,随便用标题去google或百度一下,能搜出一大片解决方案,那么为啥又要写一遍呢,不急往下看。问题背景:Same Origin Policy,译为“同源策略”。它是对于客户端脚本(尤其是JavaScript)的重要安全度量标准,其目的在于防止某个文档或者脚本从多个不同“origin”(源)装载。它认为自任何站点装载的信赖内容是不安全的。当被浏览器半信半疑的脚本运行在沙箱时,它们应该只被允许访问来自同一站点的资源,而不是那些来自其它站点可能怀有恶意的.转载 2021-02-02 17:25:21 · 195 阅读 · 0 评论 -
DDD 领域驱动设计:贫血模型、充血模型
- 前言 -要想深入掌握和了解DDD 领域驱动设计的核心,那无论如何也绕不开两大较为抽象的概念——“贫血模型”、“充血模型”: 贫血模型即事务脚本模式。 充血模型即领域模型模式。 - 贫血模型 -贫血模型最早广泛应用源于EJB2,最强盛时期则是由Spring创造,将: “行为”(逻辑、过程); “状态”(数据,对应到语言就是对象成员变量)。 分离到不同的对象中: 只有状态的对象就是所...转载 2021-01-27 16:03:30 · 346 阅读 · 0 评论 -
Java日志体系
概要本文的目的是搞清楚Java中各种日志Log之间是怎么的关系,如何作用、依赖,好让我们平时在工作中如果遇到“日志打不出”或者“日志jar包冲突”等之类的问题知道该如何入手解决,以及在各种场景下如何调整项目中的各个框架的日志输出,使得输出统一。Log日志体系在日常工作中我们可能看到项目中依赖的跟日志相关的jar包有很多,commons-logging.jar、log4j.jar、sl4j-api.jar、logback.jar等等,眼花缭乱。我们要正确的配置,使得jar包相互作...转载 2021-01-20 20:51:25 · 120 阅读 · 0 评论 -
一致性协议算法-2PC、3PC、Paxos、Raft、ZAB、NWR超详细解析
背景在常见的分布式系统中,总会发生诸如机器宕机或网络异常(包括消息的延迟、丢失、重复、乱序,还有网络分区)等情况。一致性算法需要解决的问题就是如何在一个可能发生上述异常的分布式系统中,快速且正确地在集群内部对某个数据的值达成一致,并且保证不论发生以上任何异常,都不会破坏整个系统的一致性。CAP 定理CAP 理论告诉我们,一个分布式系统不可能同时满足一致性(C:Consistency),可用性(A: Availability)和分区容错性(P:Partition tolerance)这三.转载 2021-01-17 15:07:56 · 371 阅读 · 0 评论 -
彻底揭秘操作系统之 零拷贝
- 前言 -零拷贝(Zero-Copy)是一个大家耳熟能详的概念,那么,具体有哪些框架会使用到零拷贝呢?在思考这个问题之前,让我们先一起探寻一下零拷贝机制的底层原理。- 概念篇 -1、零拷贝是什么?"零拷贝"中的"拷贝"是指操作系统在I/O操作中,将数据从一个内存区域复制到另外一个内存区域,而"零"并不是指0次复制, 更多的是指在用户态和内核态之间的复制是0次。2、零拷贝给我们带来的好处•减少甚至完全避免不必要的 CPU ...转载 2021-01-17 12:33:22 · 374 阅读 · 0 评论 -
Spring循环依赖
- 循环依赖 -所谓的循环依赖,就是两个或者两个以上的bean互相依赖对方,最终形成闭环。比如“A对象依赖B对象,而B对象也依赖A对象”,或者“A对象依赖B对象,B对象依赖C对象,C对象依赖A对象”;类似以下代码:public class A { private B b;}public class B { private A a;}常规情况下,会出现以下情况:1、通过构建函数创建A对象(A对象是半成品,还没注入属性和...转载 2021-01-17 11:46:54 · 215 阅读 · 0 评论 -
REST架构风格详解
REST是 Representational State Transfer (在表示层上的状态传输)的缩写。REST是一种WEB应用的架构风格,它被定义为6个限制,满足这6个限制,能够获得诸多好处。先用一句话来概括RESTful API (具有REST风格的API): 用URL定位资源,用HTTP动词(GET、HEAD、POST、PUT、PATCH、DELETE)描述操作,用响应状态码表示操作结果。但是 REST远远不仅是指API的风格,它是一种网络应用的架构风格。另外...转载 2021-01-17 11:46:32 · 2888 阅读 · 1 评论 -
JVM重点知识
标记-清除算法:标记无用对象,然后进行清除回收。缺点:效率不高,无法清除垃圾碎片。 复制算法:按照容量划分二个大小相等的内存区域,当一块用完的时候将活着的对象复制到另一块上,然后再把已使用的内存空间一次清理掉。缺点:内存使用率不高,只有原来的一半。 标记-整理算法:标记无用对象,让所有存活的对象都向一端移动,然后直接清除掉端边界以外的内存。 分代算法:根据对象存活周期的不同将内存划分为几块,一般是新生代和老年代,新生代基本采用复制算法,老年代采用标记整理算法。 标记-清..转载 2021-01-17 11:45:34 · 136 阅读 · 0 评论 -
Spring 中@Transactional 注解失效的场景
引言昨天公众号粉丝咨询了一个问题,说自己之前面试被问@Transactional注解哪些场景下会失效,一时语塞致使面试失败。所以今天简单的和大家分享一下@Transactional相关的知识。@Transactional注解相信大家并不陌生,平时开发中很常用的一个注解,它能保证方法内多个数据库操作要么同时成功、要么同时失败。使用@Transactional注解时需要注意许多的细节,不然你会发现@Transactional总是莫名其妙的就失效了。一、事务事务管理在系统...转载 2021-01-16 15:35:23 · 117 阅读 · 0 评论 -
对比了几种分布式事务方案,我选择了Seata
分布式事务的产生我们先看看百度上对于分布式事务的定义:分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。额~ 有点抽象,简单的画个图好理解一下,拿下单减库存、扣余额来说举例:当系统的体量很小时,单体架构完全可以满足现有业务需求,所有的业务共用一个数据库,整个下单流程或许只用在一个方法里同一个事务下操作数据库即可。此时做到所有操作要么全部提交 或 要么全部回滚很容易。分库分表、SOA可随着业务量的不断增长,单体架构渐渐扛不转载 2021-01-16 15:27:56 · 1214 阅读 · 1 评论 -
精心整理的JVM笔记带你轻松学习Java虚拟机
前言最近看了深入理解Java虚拟机第三版,整理了一些基础结构图,算是比较全的了,做一下笔记,大家一起学习。1.Java虚拟机运行时数据区图JVM内存结构是Java程序员必须掌握的基础。程序计数器 程序计数器,可以看作当前线程所执行的字节码的行号指示器 它是线程私有的。 Java虚拟机栈 线程私有的,生命周期与线程相同。 每个方法被执行的时候都会创建一个"栈帧",用于存储局部变量表(包括参数)、操作数栈、动态链接、方法出口等信息。 局部变量表存转载 2021-01-16 14:55:54 · 121 阅读 · 0 评论 -
一台Linux服务器最多能支撑多少个TCP连接?
困惑很多人的并发问题很多同学看到这个问题的第一反应是 65535。原因是:“听说端口号最多有 65535 个,那长连接就最多保持 65535 个了”。是这样的吗?还有的人说:“应该受 TCP 连接里四元组的空间大小限制,算起来是 200 多万亿个!”如果你对这个问题也是理解的不够彻底,那么今天讲个故事讲给你听!一次关于服务器端并发的聊天TCP 连接四元组是源 IP 地址、源端口、目的 IP 地址和目的端口。任意一个元素发生了改变,那么就代表的是一条完全不...转载 2021-01-16 14:21:54 · 731 阅读 · 0 评论 -
SOA VS 微服务
微服务是近几年非常火热的架构设计理念,大部分人认为是 Martin Fowler提出了微服务概念,但事实上微服务概念的历史要早得多,也不是 Martin Fowler创造出来的, Martin Fowler只是将微服务进行了系统的阐述。不过不能否认 Martin Fowler在推动微服务火热起来的作用,微服务能火, Martin Fowler功不可没。参考维基百科英文版,我们简单梳理一下微服务的历史: 2005年:Dr. PeterRodgers在Web ServicesEdge大会上..转载 2021-01-16 14:20:44 · 276 阅读 · 0 评论 -
如何选择ESB
企业级服务总线的定义来自不同厂商的大量产品都包含了“企业服务总线”名称。不幸地是,这个词汇并没有一个标准的定义。产品因此也提供许多不同的特性。在ESB被使用之前首先应该有个清晰的定义。在下面的内容中,ESB是被定义为一种协助开发者的应用集成软件产品,并且提供必要的基础设施去实现路由,转译和一些其他的集成工具。在集成的复杂路径,ESB通常介于框架和套件作为应用集成的替代,正如以下图片所示:...转载 2019-12-17 13:52:33 · 1061 阅读 · 0 评论 -
各种ESB产品比较
介绍了主流商业和开源ESB的发展趋势、可借鉴的地方和其缺点: 主要介绍: Oracle Service Bus WebSphereMessageBroker Mule ServiceMix/FUSE ESB Synapse/WSO2 ESBESB产品一览表包括商业和开源: 类型 ...转载 2019-12-16 16:24:48 · 1853 阅读 · 0 评论 -
什么是JDTX?强一致、高性能分布式事务中间件
本文来源于 infoq,原文链接:https://www.infoq.cn/article/BAXzcfjRTcgmKisa7JHm?from=groupmessage&isappinstalled=0在分布式数据库、云原生数据库、NewSQL 等名词在数据库领域层出不穷的当今,变革——在这个相对稳定的领域已愈加不可避免。相比于完全革新,渐进式增强的方案在拥有厚重沉淀的行业...转载 2019-10-28 17:17:15 · 1037 阅读 · 0 评论 -
服务的注册与发现(Consul、zookeeper、etcd、eureka、Nacos)
一. 对比常用的注册中心Consul、zookeeper、etcd、eureka、NacosFeature Consul Zookeeper Etcd Eureka Nacos 服务健康检查 服务状态,内存,硬盘等 (弱)长连接,keepalive 连接心跳 可配支持 传输层 (PING 或 TCP)和应用层 (...原创 2019-10-17 16:39:46 · 4423 阅读 · 0 评论 -
服务的注册与发现(Consul、zookeeper、etcd、eureka、Nacos)
一. 对比常用的注册中心Consul、zookeeper、etcd、eureka、Nacos Feature Consul Zookeeper Etcd Eureka Nacos 服务健康检查 服务状态,内存,硬盘等 ...原创 2019-10-17 16:22:15 · 6303 阅读 · 0 评论 -
面向对象六大原则
这篇文章主要讲的是面向对象设计中,我们应该遵循的六大原则。只有掌握了这些原则,我们才能更好的理解设计模式。 我们接下来要介绍以下6个内容。 单一职责原则——SRP 开闭原则——OCP 里式替换原则——LSP 依赖倒置原则——DIP 接口隔离原则——ISP 迪米特原则——LOD 单一职责原则单一职责原则的定义是就一个类而言,应该仅有一个...转载 2019-07-24 15:31:01 · 121 阅读 · 0 评论 -
基于SpringCloud了解微服务
接下来细说微服务架构设计中不得不知的十大要点。设计要点一:负载均衡 + API 网关在实施微服务的过程中,不免要面临服务的聚合与拆分。当后端服务的拆分相对比较频繁的时候,作为手机 App 来讲,往往需要一个统一的入口,将不同的请求路由到不同的服务,无论后面如何拆分与聚合,对于手机端来讲都是透明的。有了 API 网关以后,简单的数据聚合可以在网关层完成,这样就不用在手机 Ap...转载 2019-07-24 15:23:31 · 184 阅读 · 0 评论 -
云架构师进阶攻略
一、架构的三个维度和六个层面1.1、三大架构在互联网时代,要做好一个合格的云架构师,需要熟悉三大架构。第一个是IT架构,其实就是计算,网络,存储。这是云架构师的基本功,也是最传统的云架构师应该首先掌握的部分,良好设计的IT架构,可以降低CAPEX和OPEX,减轻运维的负担。数据中心,虚拟化,云平台,容器平台都属于IT架构的范畴。第二个是应用架构,随着应...转载 2019-07-24 15:02:56 · 1365 阅读 · 0 评论