架构设计
文章平均质量分 68
努努要要
这个作者很懒,什么都没留下…
展开
-
消息中间件主备方案选型实践
背景介绍 该消息中间件由三个子系统组成:客户端SDK、Server和控制管理中心(Admin)。我们所说的主备主要是针对Server,而Server的节点是局部有状态的,具体而言就是发布无状态,但是拉取有状态。因此,对于发布而言,由于分布式部署所以本身具备高可用性;但是对于拉取,就存在单点的可用性问题。主备切换的关键问题 实现主备切换,需要解决两个核心问题: 1. 解决主备之间状态检原创 2016-04-20 21:00:44 · 1157 阅读 · 0 评论 -
从无到有:软件项目过程敏捷实践
项目过程分解 通过本次消息中间件系统的全程参与,对于软件项目从无到有的生产过程有了较深入的了解,尤其对于架构设计的决策过程和依据,有了全面的认识。整个项目过程从无到有依次可以分解为九个过程,下面一一道来。(一)背景分析 主要是要分析清楚三个问题: 1. 这个项目的诉求是在什么业务现状下产生的? 2. 最终要解决什么问题? 3. 有什么价值? 为原创 2016-04-20 20:56:59 · 1892 阅读 · 0 评论 -
分析问题和学习知识的方法论区别
无论是分析问题还是学习知识,都是有规律可循的,遵循这个规律会事半功倍。这个规律,我们就可以称之为方法论。总结起来就是三个关键词:What、How、Why。但是二者不同之处在于三个关键点的组织顺序不一样。分析问题 方法论:Why -> What -> How 举例来说,现在我们要解决这样一个问题(需求):设计一个消息中间件的主备方案。 问题很明确,但是我们要怎么快速、清晰的分原创 2016-04-20 20:58:01 · 1225 阅读 · 0 评论 -
基于Netty的“请求-响应”同步通信机制实现
需求描述实现基于Netty的“请求-响应”同步通信机制。设计思路 Netty提供了异步IO和同步IO的统一实现,但是我们的需求其实和IO的同步异步并无关系。我们的关键是要实现请求-响应这种典型的一问一答交互方式。要实现这个需求,需要解决两个问题: 1. 请求和响应的正确匹配。 当服务端返回响应结果的时候,怎么和客户端的请求正确匹配起来呢?解决方式:通过客户端唯一的Req原创 2016-04-20 20:58:50 · 19600 阅读 · 5 评论 -
【连载】大话系统架构决策 - 易用性
前言为什么要谈易用性呢?其实是因为博主从事软件行业长久以来,另一最烦躁的,也是经常听到身边同事抱怨的一句话就是:我靠!天啦撸!这个API好难用啊!!!其实难用就是消费方对于提供方所提供资源(服务或能力)的最直观的不满用词。这个时候,你要真想让消费方说哪些地方难用?估计他只会告诉你:哇,你这个参数命名很让我费解啊,完全不知道什么意思,而且还为文档!老规矩,在详细阐述之前,我们尝试定义这个特性(关注点)原创 2016-06-09 07:13:37 · 1270 阅读 · 0 评论 -
【连载】大话系统架构决策 - 伸缩性
前言在单机应用时代,换句话说,如果你的应用就部署一个实例,并没有伸缩性的概念。伸缩性是针对分布式系统的场景下,在有意义。而且现在的大型分布式系统,对于伸缩性是非常重视的,因为现在的系统运维都希望机器或容器能够动态扩容。比如,淘宝的双11、京东的618等大型促销活动,其流量和压力都是平时的很多倍,但是总不能要求平时就用这么多的部署资源,这会很浪费,所以动态扩容就显得很有必要了。老规矩,先来定义一下伸缩原创 2016-06-10 14:53:50 · 778 阅读 · 0 评论 -
【连载】大话系统架构决策 - 灵活性
前言为什么要首先谈灵活性呢?其实是因为博主从事软件行业长久以来,最烦躁的,也是经常听到身边同事抱怨的一句话就是:我靠!天啦撸!需求又变啦!!!其实需求变更就涉及到系统架构的特性(关注点)之灵活性。系统灵活性高,那么任你需求如何变更,我自岿然不动!就像九阳真经中所说的“他强由他强,清风拂山冈。他横任他横,明月照大江。”反之,微末变更也会让我哭爹喊娘,埋头做码畜!既然要谈灵活性,那么我首先来尝试定义下这原创 2016-06-06 21:05:14 · 1780 阅读 · 0 评论