架构设计
zzhongcy
因为站在了巨人的肩上,所以我看得更远。
当你发现自己的才华撑不起野心时,就请安静下来学习吧
展开
-
同城双活、异地多活架构分析
最近研究了一下异地多活架构,网上有这几篇文章,这里记录一下。原创 2023-05-19 10:30:43 · 420 阅读 · 0 评论 -
系统架构的一些原则
今天是2021年的最后一天,这里转载一篇《系统架构的一些原则》的文章,共勉。原则:原则一:关注于真正的收益而不是技术本身 原则二:以应用服务和 API 为视角,而不是以资源和技术为视角 原则三:选择最主流和成熟的技术 原则四:完备性会比性能更重要 原则五:制定并遵循服从标准、规范和最佳实践 原则六:重视架构扩展性和可运维性 原则七:对控制逻辑进行全面收口 原则八:不要迁就老旧系统的技术债务 原则九:不要依赖自己的经验,要依赖于数据和学习 原则十:千万要小心 X – Y 问题,要追问转载 2021-12-31 12:01:32 · 439 阅读 · 0 评论 -
深入浅出一致性Hash原理,及问题解决
一、前言在解决分布式系统中负载均衡的问题时候可以使用Hash算法让固定的一部分请求落到同一台服务器上,这样每台服务器固定处理一部分请求(并维护这些请求的信息),起到负载均衡的作用。但是普通的余数hash(hash(比如用户id)%服务器机器数)算法伸缩性很差,当新增或者下线服务器机器时候,用户id与服务器的映射关系会大量失效。一致性hash则利用hash环对其进行了改进。二、一致性Hash概述为了能直观的理解一致性hash原理,这里结合一个简单的例子来讲解,假设有4台服务器,地址为ip1,i转载 2020-09-09 17:06:33 · 771 阅读 · 0 评论 -
Yupoo(又拍网)的系统架构
Yupoo!(又拍网) 是目前国内最大的图片服务提供商,整个网站构建于大量的开源软件之上。以下为其使用到的开源软件信息:操作系统:CentOS、MacOSX、Ubuntu服务器:Apache、Nginx、Squid数据库:MySQLmochiweb、MySQLdb服务器监控:Cacti、Nagios、开发语言:PHP、Python、Erlang、Java、Lua分布转载 2014-10-20 10:14:39 · 1926 阅读 · 0 评论 -
WoW服务器模拟器Ascent网络模块分析
Ascent的github地址:https://github.com/SkyFire/Ascent_NG/tree/masterAscent是WoW的服务器模拟器,你可以从它的SVN上获取它的全部代码,并从它的WIKI页面获取架构起整个服务器的相关步骤。 基本架构: Ascent网络模块核心的几个类关系如下图所示: ThreadBase属于Ascent线程池模块中的类,它实现了转载 2015-07-08 12:30:49 · 1684 阅读 · 0 评论 -
并发框架Disruptor译文
Martin Fowler在自己网站上写了一篇LMAX架构的文章,在文章中他介绍了LMAX是一种新型零售金融交易平台,它能够以很低的延迟产生大量交易。这个系统是建立在JVM平台上,其核心是一个业务逻辑处理器,它能够在一个线程里每秒处理6百万订单。业务逻辑处理器完全是运行在内存中,使用事件源驱动方式。业务逻辑处理器的核心是Disruptor。Disruptor它是一个开源的并发框架,并获得2转载 2016-10-19 16:02:31 · 952 阅读 · 0 评论 -
游戏开发中常用的设计模式
使用设计模式来提高程序库的重复利用性是大型程序项目开发必须的。但是在“四人帮”的设计模式概述中提到了23种标准设计模式,不但难以记住,而且有些设计模式更多的适用于应用程序开发,对游戏项目引擎设计并没有很多的利用价值。根据经验,精挑细选后,笃志在这里记录一些自认为有利用价值的设计模式,以便之后自己设计时使用。一:观察者Observer 观察者的设计意图和作用是: 它将对象与对象之转载 2016-11-18 09:47:11 · 1394 阅读 · 0 评论 -
Go语言 有限状态机FSM
有限状态机又简称FSM(Finite-State Machine的首字母缩写)。这个在离散数学里学过了,它是计算机领域中被广泛使用的数学概念。是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。编译原理学得好的童鞋应该对FSM不陌生,因为编译器就用了FMS来做词法扫描时的状态转移。FSM的概念在网上一搜可以搜一大堆出来,但估计您也看不大明白。本文将以不一样的方式来讲述FSM的概转载 2017-02-06 15:14:11 · 695 阅读 · 0 评论 -
分布式系统关注点
分布式系统关注点——初识「高可用」 分布式系统关注点——仅需这一篇,吃透「负载均衡」妥妥的 分布式系统关注点——如何去实施「负载均衡」? 分布式系统关注点——99%的人都能看懂的「熔断」以及最佳实践 分布式系统关注点——想通关「限流」?只要这一篇 分布式系统关注点——99%的人都能看懂的「补偿」以及最佳实践 分布式系统关注点——「无状态」详解 分布式系统关注点——「高内聚低耦合」详解...转载 2019-05-06 14:22:12 · 204 阅读 · 0 评论 -
缓存穿透,缓存击穿,缓存雪崩解决方案分析
前言设计一个缓存系统,不得不要考虑的问题就是:缓存穿透、缓存击穿与失效时的雪崩效应。缓存穿透缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。在流量大时,可能DB就挂掉了,要是有人利用不存在的key频繁攻击我们的应用,这就是漏洞。解决方案有...转载 2019-07-26 10:06:24 · 264 阅读 · 0 评论 -
负载均衡说明(二层/三层/四层/七层负载), 以及Nginx/LVS/HAProxy负载均衡软件的优缺点详解(总结)
一. 什么是负载均衡 1)负载均衡(Load Balance)建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。负载均衡有两方面的含义:首先,大量的并发访问或数据流量分担到多台节点设备上分别处理,减少用户等待响应的时间;其次,单个重负载的运算分担到多台节点设备上做并行处理,每个节点设备处理结束后...转载 2014-10-13 15:48:56 · 11777 阅读 · 3 评论 -
大型网站架构不得不考虑的10个问题
这里的大型网站架构只包括高互动性高交互性的数据型大型网站,基于大家众所周知的原因,我们就不谈新闻类和一些依靠HTML静态化就可以实现的架构 了,我们以高负载高数据交换高数据流动性的网站为例,比如海内,开心网等类似的web2.0系列架构。我们这里不讨论是PHP还是JSP或者.NET环 境,我们从架构的方面去看问题,实现语言方面并不是问题,语言的优势在于实现而不是好坏,不论你选择任何语言,架构都是必须转载 2014-10-13 15:35:12 · 695 阅读 · 0 评论 -
HAProxy---HAProxy简介
HAProxy是一款提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件,HAProxy是完全免费的、借助HAProxy可以快速并且可靠的提供基于TCP和HTTP应用的代理解决方案。(1)免费开源,稳定性也是非常好,这个可通过我做的一些小项目可以看出来,单Haproxy也跑得不错,稳定性可以与硬件级的F5相媲美;(2)根据官方文档,HAProxy可以跑满转载 2014-10-13 15:42:05 · 1034 阅读 · 0 评论 -
软件架构设计
软件架构设计【一】-软件架构设计过程软件架构设计尚没有万灵的方法论支持,还是个非常新兴的行业,给出个人理解的行业软件架构设计过程,受个人水平有限,仅供参考:1.业务分析:针对目标行业的业务战略、蓝图、业务功能及流程进行分析,提出其中部分功能可以使用信息化进行处理,通过分析可以得出信息化要解决的问题。2.解决方案设计:根据业务战略,形成行业信息化解决方案。转载 2014-03-18 21:42:42 · 1107 阅读 · 0 评论 -
专家视角看IT与架构
软件产业目前的状态很混乱,开发成本越来越高,质量却越来越差。云计算所给出的承诺和具体实现还有相当大的差距: 最近,在Batler小组的讨论会中举行了一场题为“业务流程管理和面向服务的架构”的座谈,得出的结论认为,只有公有云才是真正能够节省成本的方法,但是它还不够透明,中型和大型企业暂时还无法考虑把它作为节省IT成本的解决方案。当前在行业中有很多这样的宣传性的说法,但是它们能够解决真正的问题吗?转载 2014-03-18 19:35:54 · 1039 阅读 · 0 评论 -
博客系统架构对比分析
博客系统架构对比分析新浪博客系统架构(http://blog.sina.com.cn):web服务器:nginx+apachecgi:php博客应用服务器: 猜测是c++, memcachdb.存储系统:mysql发表最简单的一篇博客(内容在100字以内), 花了2.77秒。调用接口:http://control.blog.sina.com.cn/admi转载 2014-03-18 19:23:36 · 2233 阅读 · 0 评论 -
QQ空间技术架构之深刻揭密
QQ空间技术架构之深刻揭密 作者:张英,发布于2012-7-17 QQ空间作为腾讯海量互联网服务产品,经过近七年的发展,实现了从十万级到亿级同时在线的飞跃。在这个过程中,QQ空间团队遇到了哪些技术挑战?其站点前后台架构随着业务规模的变化又进行了怎样的演进与变迁?成长背后有过怎样的心酸和快乐……4.26转载 2014-03-18 21:24:25 · 1883 阅读 · 0 评论 -
一步步构建大型网站架构
一步步构建大型网站架构 之前我简单向大家介绍了各个知名大型网站的架构,亿万用户网站MySpace的成功秘密、Flickr架构、YouTube网站架构、PlentyOfFish 网站架构学习、WikiPedia技术架构学习笔记。这几个都很典型,我们可以从中获取很多有关网站架构方面的知识,看了之后你会发现你原来的想法很可能转载 2014-03-18 19:34:09 · 1467 阅读 · 0 评论 -
架构腐化之谜
架构腐化之谜 作者:陈金洲,发布于2011-07-22 ,infoq前言新技术层出不穷。过去十年时间里,我们经历了许多激动人心的新技术,包括那些新的框架、语言、平台、编程模型等等。这些新技术极大地改善了开发人员的工作环境,缩短了产品和项目的面世时间。然而作为在软件行业第一线工作多年的从业者,我们却不得不面对一个现实,那转载 2014-03-18 19:45:16 · 1376 阅读 · 0 评论 -
面向服务体系架构和业务组件的思考
摘要: 在基于面向服务体系架构(SOA)中,“组件化”是一个很重要的概念,如何进行“组件化”开发是搭建企业级业务基础平台时需要考虑的一个重要课题,本文通过建立业务组件(BC)接口模型及内部结构模型,提供了一个在新开发系统环境下基于Web服务和OSGi标准的组件化开发模型。 什么是业务组件(BC) 组件化、模块化是软件开发中一个很重要的概念,基于面向服务体系架构(Service转载 2014-03-18 19:42:19 · 4185 阅读 · 0 评论 -
业务模块松耦合
业务模块松耦合简介:本最佳实践要解决的主要问题是如何解耦业务处理逻辑和数据库部署在同一服务器上的方式,避免业务增长时,服务器水平扩展困难。 本最佳实践要解决的主要问题是如何解耦业务处理逻辑和数据库部署在同一服务器上的方式,避免业务增长时,服务器水平扩展困难。一个紧耦合的部署示意图如下图所示。我们要尽力将业务处理逻辑和数据库解耦部署,分转载 2014-03-18 19:20:05 · 3322 阅读 · 0 评论 -
软件系统性能常识
不管是系统设计人员、开发人员还是测试人员,要构建高性能的系统,对于系统性能的一些常用术语都不了解,那是无从做起的,这里主要介绍几个软件性能指标的术语及计算方法,便以在性能优化及性能评判时有的放矢:1.响应时间 响应时间是系统对用户请求作出响应的时间,响应时间是用户对系统性能最直观的感受,因此直接表现了系统的性能。影响系统响应时间的因素主要有以下几个: 1)转载 2014-03-18 19:37:06 · 1156 阅读 · 0 评论 -
软件架构师的定位、成长曲线及能力模型
产品研发过程中,总体可以分为以下几个核心流程,面向客户的流程,产品规划流程,产品线开发流程(可选),产品开发流程,人员与技术管理流程。架构师在各个流程中承担的主要职责如下:架构师成长模型chuck kilmer模型如下图所示:开发人员从技术专家转型为架构师的成长曲线如下所示: 可以看出,转载 2014-03-18 19:39:21 · 1415 阅读 · 1 评论