发布了文章5 月 9 日
本文从架构师视角讨论分布式事务的实现方式,文章不会深入实现细节而重点放在设计思想上面,以让你掌握方法间的优缺点及适配场景,用于日常技术选型工作。
发布了文章3 月 26 日
架构设计本质上是权衡取舍,以最低成本解决系统当前问题,并合理预留扩展能力,适配未来业务增长。本文结合笔者亲身参与的项目实践,分享从0到1搭建亿级数据规模管理系统的完整过程,同时阐述如何依据不断增长的数据存储需求,分阶段对系统存储架构进行演进与重构。
发布了文章3 月 23 日
缓存作为高性能、高可用系统的重要组成部分,在系统架构选型中已经不是一个可选项而是一个必选项。正确使用缓存不仅可以缓解后端服务器CPU和慢速存储设备上的压力,保证海量用户请求下系统稳定性和可用性;同时还可以降低请求响应延时,提升系统性能和用户体验。
发布了文章2025-12-07
分布式系统架构(或称微服务架构)【1】是由多个小型的服务(微服务)组成单一系统的架构风格,既然是多个服务构成,必然涉及到服务间相同通信以完成特定的功能的情况。服务间通信的方式除了参考单体应用本地方法调用衍生出来的程过程调用(Remote Procedure Call)...
发布了文章2025-11-12
《微服务架构设计模式》有专门一个章节介绍如何界定微服务系统中服务的范围。我参考书中内容结合自身多年微服务系统架构设计经验,将定义微服务范围的方法整理成本文。一来为了对自己的经验和思路进行梳理,以查缺补漏并加深理解。二来方便和对此处内容感兴趣的小伙...
回答了问题2023-10-10
我看上面的答案都是偏技术架构的,很多分布式远程调用中间件都提供了相应的功能和支撑。我从业务架构给一点自己的理解:微服务的职责划分、微服务间的依赖关系、微服务间的层级(层级或扁平)、如何保证各个微服务自身的高内聚、低耦合和伸缩性,如何使微服务与开发...
回答了问题2023-10-10
首先云计算和SAAS都是相对广义的概念,但是云计算范围更加广泛,涉及所有与云有关的概念、技术和场景,SAAS只是云计算概念的一个子集,表示软件即服务,公司常用的CRM、HRM、ERP系统如果不是部署于本地而是通过以用户维度购买部署于云端的产品服务的使用权,那么你就...
发布了文章2023-10-03
在《为什么要使用zookeeper》(以下简称前文)这篇文章中我们以分布式锁为例介绍了使用zookeeper的基本原理及适用场景。前文最后我们遗留了一个问题,分布式锁的实现需要线性一致性保证,而zookeeper并不满足线性一致性却依然可以实现分布式锁,本文将对这个问题进一...
发布了文章2023-09-25
本文标题为《为什么要使用zookeeper》,但是本文并不是专门介绍zookeeper原理及其使用方法的文章。如果你在网上搜索为什么要使用zookeeper,一定能能到从zookeeper原理、适用场景到Zab算法原理等各种各样的介绍,但是看过之后是不是还是懵懵懂懂,只是学会了一些片面...
回答了问题2023-03-13
在分布式系统中,网络故障一定会发生,所以分区容错性必须保证,需要在AP和CP中选择,也就是在保证分区容错性的前提下,要么保证系统的一致性,要么保证系统的可用性。
发布了文章2023-02-03
事务作为传统关系型数据库支持的重要特性,诚然一部分NoSQL数据库为了在分布式场景下可用性和性能的考虑都不在支持事务,但是代表未来趋势的NewSQL数据库在分布式场景下依然保留事务并支持ACID特性,这说明事务在数据库实现中依然是一个重要的功能特性。作为简化业务...
发布了文章2022-03-08
假设公司从事电商业务,除了电商系统外,公司内部一般也会有一个客户关系系统(CRM)。如果CRM系统希望获取到电商系统注册的客户信息,以完成自己的后续业务。该如何实现?
赞了文章2019-01-23
分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。以上是百度百科的解释,简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要...
赞了文章2019-01-23
分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。以上是百度百科的解释,简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要...
发布了文章2018-09-05
经过上一篇文章《一步一步实现Tomcat——实现一个简单的Web服务器》,我们实现了一个简单的Web服务器,可以响应浏览器请求显示静态Html页面,本文更进一步,实现一个Servlet容器,我们不只能响应静态页面请求,还能响应Servlet请求,虽然现在我们只能在自己的Servlet中...
发布了文章2018-08-29
前言本文描述Java线程线程状态及状态转换,不会涉及过多理论,主要以代码示例说明线程状态如何转换。基础知识1. 线程状态线程可以有6种状态:New(新建)Runnable(可运行)Blocked(被阻塞)Waiting(等待)Timed waiting(计时等待)Terminated(被终止)New:new ...
发布了文章2018-08-27
最近在读《How Tomcat Works》,收获颇丰,在编写书中示例的过程中也踩了不少坑。不知你有没有体会,编程就一门是“不试不知道,一试吓一跳”的实践艺术。所以我将将自己的实践过程记录下来并附上自己的思想过程编撰成文,望能抛砖引玉,引起大家思考。原书中主要内容...
发布了文章2018-08-27
“不要重复造轮子”一定是你刚入行时听过的前辈的忠告,相信大部分人的工作都是业务导向或项目导向型,在最短时间内保质保量的完成工作是我们的首要目标,在这个前提下选择业界比较成熟框架或者遇到问题寻找已有的解决方案变成我们的第一选择。我觉得这种做法无可或非...
发布了文章2018-07-22
最近在主导公司网站进行全站Https改造工作,本文记录在改造过程中遇到的一个由于后端302跳转导致前端浏览器阻止访问的问题,感觉这样的问题有一定通用性,所以编辑成文,希望能给遇到类似问题的人们有所帮助。
发布了文章2018-04-09
在上一篇文章中《Java多线程奇幻之旅——CAS算法实现线程安全》,我们介绍了Synchronized和CAS方式实现线程安全类的方法,两种方式一个是锁定阻塞方式,一个是非阻塞方式。本文专注于两种实现方式效率问题。本文是上篇文章的延续,会借用到上文中的代码,如果没有阅读...