Architect
文章平均质量分 56
不能飞的肥燕
10多年IT经验,5年多阿里巴巴和百度等的工作经验,互联网相关技术娴熟扎实。
展开
-
新浪微博如何应对极端峰值下的弹性扩容挑战?
新浪微博在 2015 年春晚便通过 Docker 实现了私有云平台的弹性调度能力,随着公有云技术的成熟,我们发现原有私有云比较困难的问题在公有云上能够比较容易的解决,例如突发峰值情况下弹性资源的成本,小业务快速试错等场景。在 2016 年,微博完成了利用 Docker 构建混合云架构,本文将分享安全、网络、资源管理、调度管理、跨云服务发现等方面的一些实践经验。新浪微博庞大的数据背后是持续不断的技术挑战微博的数据量,在国内的社交媒体中排行位居前列。如下图:百亿级 PV、千亿级数据、万台以上转载 2021-02-04 18:22:10 · 531 阅读 · 0 评论 -
两地三中心
1、概念两地三中心:是指同城双中心加异地灾备一种商用容灾备份解决方案; 两地是指同城、异地; 三中心是指生产中心、同城容灾中心、异地容灾中心。(生产中心、同城灾备中心、异地灾备中心) 双活数据中心“双活”或“多活”数据中心,区别于传统数据中心和灾备中心的模式,前者多个或两个数据中心都处于运行当中,运行相同的应用,具备同样的数据,能够提供跨中心业务负载均衡运行能力,实现持续的应用可用性和灾难备份能力,所以称为“双活”和“多活...原创 2021-02-01 16:07:24 · 4429 阅读 · 0 评论 -
互联网架构变迁以及知识点
标题原创 2021-01-18 18:03:23 · 103 阅读 · 0 评论 -
eBay架构的思想金矿 - zt
了解一件事情是怎么做的一个正确的方式是看看它在现实中是怎么做的。软件工业一直以来都在为"很多idea仅仅在理论上说说"所困惑。与此同时,软件厂商不断地把这些idea作为最佳实践推销给大家。 很少的软件开发者亲眼目睹过大规模可扩展的架构这一领域。幸运的是,有时我们可以看到和听到关于这方面公开发表的资料。我读过一些好的资料关于 google的硬件基础设施的设计以及yahoo的页面渲染专利转载 2010-03-02 20:06:00 · 936 阅读 · 0 评论 -
Ebay架构特点(HPTS 2009)
在HPTS 2009上,ebay 架构师Randy Shoup又列出了五个lessions.它们分别是:1 Expect (R)evolution2 Dependencies Matter3 Be Authoritative4 Never Enough Data5 Custom Infrastructure我结合ebay以前的5个lessions,总结一下可伸缩性和高性能的系统架构的一些最佳的实践转载 2010-03-02 20:04:00 · 645 阅读 · 0 评论 -
如何做压测
http://photo.weibo.com/1760512544/wbphotos/large/mid/3897299899951087/pid/68ef4a20gw1ewyvt69t3dj21c20wztcr转载 2016-05-10 11:55:10 · 709 阅读 · 0 评论 -
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器转载 2010-12-06 08:23:00 · 502 阅读 · 0 评论 -
面向站长和网站管理员的Web缓存加速指南
面向站长和网站管理员的Web缓存加速指南转载 2010-12-03 15:48:00 · 527 阅读 · 0 评论 -
加速你的hibernate引擎
1. 简介Hibernate是最流行提供数据固话和查询的ORM引擎之一。在你的项目中引入Hibernate并使其可以工作是非常简单的。然而,使其工作的非常好则需要会费很多的时间以及大量的经验。通过我们使用Hibernate3.3.1以及Oracle9i的energy项目中的一些例子,这篇文章介绍了Hibernate调优用到的一些技术。我们假设您已对Hibernate具有最基本的了解。对于某些在Hibernate官方文档(HRD)或者其他的调优文章中有所讲述,我们将仅仅提供一个文档的引用以及从一个不同视角的简翻译 2010-11-01 17:02:00 · 1126 阅读 · 0 评论 -
缓存体系MemCached的Java客户端优化过程
Memcached 是什么?Memcached是一种会合式Cache,撑持漫衍式横向扩展。这里必要诠释申明一下,良多开辟者感觉Memcached是一种漫衍式缓存体系,可是实在Memcached办事端自己是单实例的,只是在客户端实现历程中可以按照存储的主键做分区存储,而这个区便是Memcached办事真个一个大概多个实例,若是将客户端也席卷到Memcached中,那么可以部门观点上说是会合式的。实在回首一下会合式的构架,无非两种环境:一是节点平衡的网状(JBoss Tree Cache),操纵JGroup的多转载 2010-07-06 16:17:00 · 1048 阅读 · 0 评论 -
Java使用Memcached
这些天在设计SNA的架构,接触了一些远程缓存、集群、session复制等的东西,以前做企业应用的时候感觉作用不大,现在设计面对internet的系统架构时就非常有用了,而且在调试后看到压力测试的情况还是比较爽的。4uV^M*b.W(d0在缓存的选择上有过很多的思考,虽然说memcached结合java在序列化上性能不怎么样,不过也没有更好的集群环境下的缓存解决方案了,就选择了memcached。本来计划等公司买的服务器到位装个linux再来研究memcached,但这两天在找到了一个windows下的原创 2010-07-06 16:16:00 · 1513 阅读 · 0 评论 -
Memcached在项目中的应用
http://www.javaeye.com/wiki/topic/636347转载 2010-07-06 16:09:00 · 621 阅读 · 0 评论 -
Memcached的JGroups实现支持失败转移和JMX
作者 Srini Penchikala译者 宋玮 发布于 2008年10月10日 下午10时6分 社区 Java 主题 集群与缓存 Memcached 是一个分布式内存对象缓存系统, 用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于的是一个存储键/值对的hashmap。其转载 2008-10-13 09:34:00 · 581 阅读 · 0 评论 -
Hunting Java Memory Leaks
IntroductionA memory leak can generally be assumed when freespace in the JVM heap reduces over time. This indicates that the Garbage Collector is unable to release unused objects and classes.There are转载 2008-03-13 14:28:00 · 1463 阅读 · 0 评论 -
Java callback-JAVA实现回调
<br /> <br />所谓回调,就是客户程序C调用服务程序S中的某个函数SA,然后S又在某个时候反过来调用C中的某个函数CB,对于C来说,这个CB便叫做回调函数。例如Win32下的窗口过程函数就是一个典型的回调函数。一般说来,C不会自己调用CB,C提供CB的目的就是让S来调用它,而且是C不得不提供。由于S并不知道C提供的CB姓甚名谁,所以S会约定B的接口规范(函数原型),然后由C提前通过S的一个函数R告诉S自己将要使用CB函数,这个过程称为回调函数的注册,R称为注册函数。Web Service以及Jav转载 2011-05-04 11:38:00 · 1823 阅读 · 1 评论 -
Java中的Dynamic Proxy(动态代理)
Dynamic Proxy是这样一种class:它是在运行时生成的class,在生成它时你必须提供一组interface给它,然后该class就宣称它实现了这些 interface。你当然可以把该class的实例当作这些interface中的任何一个来用。当然啦,这个Dynamic Proxy其实就是一个Proxy,它不会替你作实质性的工作,在生成它的实例时你必须提供一个handler,由它接管实转载 2009-09-11 09:16:00 · 667 阅读 · 0 评论 -
Java模式设计之单例模式(一)
作为对象的创建模式[GOF95], 单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。 单例模式的要点 单例单例 显然单例模式的要点有三个;一是某各类只能有一个实例;二是它必须自行创建这个事例;三是它必须自行向整个系统提供这个实例。在下面的对象图中,有一个"单例对象",而"客户甲"、"客户乙" 和"客户丙"是单例对象的三个客户对象。原创 2009-08-25 17:43:00 · 469 阅读 · 0 评论 -
Java模式设计之单例模式(二)
登记式单例类 登记式单例类是GoF 为了克服饿汉式单例类及懒汉式单例类均不可继承的缺点而设计的。本书把他们的例子翻译为Java 语言,并将它自己实例化的方式从懒汉式改为饿汉式。只是它的子类实例化的方式只能是懒汉式的,这是无法改变的。如下图所示是登记式单例类的一个例子,图中的关系线表明,此类已将自己实例化。 代码清单3:登记式单例类 import java.util.转载 2009-08-25 17:41:00 · 452 阅读 · 0 评论 -
单例的缺陷等
1. 缺陷: 单例,也就是jvm中只有一个,这样在多线程的情况下会共享同一个对象,于是很容易产生多线程问题。所以单例只适合一个servcie类,而且是无状态的service。 2. 一个类,我将它的所有的接口都声明为public static的,然后直接通过类访问这些API就可以了,连对象都不要生成,单例还有啥作用啊?个人认为:对于静态的方法,都是通过类调用的,也就是你的业务和某一原创 2009-08-25 17:26:00 · 563 阅读 · 0 评论 -
Java单例模式探究
作为对象的创建模式[GOF95],单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。由定义可以总结出单例模式的要点有三个:一是单例类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。 在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。这些应用都或多或少具有资源管理器的功能。每台计算原创 2009-05-15 12:41:00 · 1755 阅读 · 0 评论 -
设计模式之状态模式
设计模式之状态模式 ―――策略模式的孪生兄弟 在本文中我将通过一个DEMO的迭代来讲述状态模式,这个DEMO以交谈的方式提出,交谈中将有三个角色出现:PM、客户、我。并在最后提一下Martin Fowler的Replace Type Code With State/Stategy重构。然后一起看看状态模转载 2008-06-17 15:00:00 · 733 阅读 · 0 评论 -
老生常谈:关于分页查询和性能问题
分页查询是经常能够遇到的问题,我们首先看看分页查询存在的理由:方便用户:用户不可能一次察看所有数据,所以一页一页的翻看比较好。 提高性能:一次从数据库中提取所有数据会比较慢。 那么现在我来尝试反驳上述理由:真的方便吗?我们考虑下面的情况 如果数据只有20条。 如果数据超过1000条。第一种显然不必分页查询。奇怪的是第二种也不必,因为没有哪个用户愿意一页一页的翻到转载 2008-03-06 16:23:00 · 1492 阅读 · 0 评论 -
DDD-架构(分层/六边形/RESTful)
https://www.jianshu.com/p/c405aa19a049原创 2020-07-08 01:02:46 · 3713 阅读 · 0 评论 -
作为架构师,如何画好架构图
架构图本文章用于搜集较为成熟和具有参考价值的架构图模型、文章以及最佳实践。C4 模型C4 模型中的 C4,代表上下文(Context)、容器(Container)、组件(Component)和代码(Code),即一系列分层的图表,可以用这些图表来描述不同缩放级别的软件架构,每种图表都适用于不同的受众。具体可参考:https://c4model.com/。相关的简单介绍:用于软件架构的 C4 模型The C4 Model for Softwar...原创 2020-07-01 15:05:16 · 236 阅读 · 0 评论 -
架构图最佳实践
架构图本文章用于搜集较为成熟和具有参考价值的架构图模型、文章以及最佳实践。C4 模型C4 模型中的 C4,代表上下文(Context)、容器(Container)、组件(Component)和代码(Code),即一系列分层的图表,可以用这些图表来描述不同缩放级别的软件架构,每种图表都适用于不同的受众。具体可参考:https://c4model.com/。相关的简单介绍:用于软件架构的 C4 模型The C4 Model for Softwar...原创 2020-07-01 14:42:08 · 201 阅读 · 0 评论 -
代码设计几大原则
开闭原则单一职责依赖倒置最少知识里氏替换接口隔离组合/聚合复用原创 2020-06-28 17:29:03 · 817 阅读 · 0 评论 -
异地多活
1、 是不是需要:核心系统才考虑多活,非核心不需要。2、 实时一致性:多活机房物理距离尽量比较短 减少需要同步的数据 保证最终一致性,不保证实时一致性3、实现方案: 避免直接使用用中间件的方案如mysql、redis等,虽然有现成方案,但是也有先天不足,不建议直接使用。 可以参考其原理,根据业务场景,另起炉灶,这样有问题(如同步出错/延迟)可以进行干预4、100%可用性放弃这种想法,...原创 2020-06-28 15:17:40 · 130 阅读 · 0 评论 -
分布式架构原理解析
1. 分布式术语1.1. 异常服务器宕机内存错误、服务器停电等都会导致服务器宕机,此时节点无法正常工作,称为不可用。服务器宕机会导致节点失去所有内存信息,因此需要将内存信息保存到持久化介质上。网络异常有一种特殊的网络异常称为——网络分区 ,即集群的所有节点被划分为多个区域,每个区域内部可以通信,但是区域之间无法通信。磁盘故障磁盘故障是一种发生概率很高的异常。使用冗余机制,将数据存储到多台服务器。1.2. 超时在分布式系统中,一个请求除了成功和失败两种状态,还存在着原创 2020-06-16 17:21:45 · 1376 阅读 · 0 评论 -
饿了么异地多活技术实现(四)- 实时双向复制工具(DRC)
DRC介绍饿了么的 Data Replicate Center(DRC)项目用于数据双向复制和数据订阅,使用场景如下图:要点说明:跨机房的 Mysql 数据复制完全通过 DRC 来完成 还有很多业务团队通过 DRC 来实现数据订阅目前饿了么100%的跨机房数据复制,90%的数据订阅都通过DRC完成,每天有大量的数据流经DRC。复制延迟保持在1s以下,从来没有发生过数据丢失和错乱的情况。DRC的设计目标包括:实时双向数据复制,延时 < 1s ,并能够解决双向修改时的数据.转载 2020-06-08 11:57:27 · 772 阅读 · 0 评论 -
饿了么异地多活技术实现(三)GZS&DAL
饿了么技术团队花了1年多的时间,实现了业务的整体异地多活,能够灵活的在多个异地机房之间调度用户,实现了自由扩容和多机房容灾的目标。本文介绍这个项目的中五大核心基础组件中的DAL与GZS,关于项目整体介绍以及其它组件的实现细节可以参考本系列的其它文章。GZS (Global Zone Service:全局状态协调器)背景多活改造的一个核心是多活流量路由,来源主要包括三个方面:从ezone外部发起的请求。比如用户下订单,商户添加菜品等等。这个部分的请求由API Router路由到正确的ez.转载 2020-06-08 11:49:17 · 520 阅读 · 0 评论 -
饿了么异地多活技术实现(二)API-Router的设计与实现
背景:饿了么随着业务量的增长,单个数据中心的容量无法支撑全部流量,同时传统机房冷备份方式的缺陷,促使饿了么异地多活应运而生;而作为多活重要组件之一的API-Router,扮演着客户端入口流量到后端机房路由的重要角色,当一个机房出现故障甚至宕机,可以实现机房快速切换。设计目标:1、入口流量可以根据sharding key规则路由到对应的机房(准确的说是ezone);2、配合机房切换规则,能实现流量的转移;3、尽可能的实现高性能、高可用、高并发,保护后端服务、削峰填谷;前两点,主要.转载 2020-06-08 11:02:38 · 401 阅读 · 0 评论 -
反向代理和正向代理
基本概念拾起来(1)正向代理和代理服务器正向代理即通常所说的代理,用于代表内部网络用户向Internet上的服务器(或称外部服务器,通常为Web服务器)发出连接请求,并接收响应结果,执行该代理功能的服务器称为代理服务器。使用代理服务器访问外部网络时,客户端必须在局域网设置中指明代理服务器的地址以及要代理的服务的端口号。(2)反向代理和代理服务器反向代理的方向与正向代理相反,指代表外部网络用户向内部服务器发出请求,即接收来自Internet上用户的连接请求,并将这些请求转发给内部网络上的服务器原创 2020-06-08 10:53:35 · 126 阅读 · 0 评论 -
DRC实践
DRC简介DRC(Data Replication Center)是我在阿里听过的一个概念,它的业务域是支持异构数据库实时同步,数据记录变更订阅服务。为跨域实时同步、实时增量分发、异地双活、分库分表等场景提供产品级的解决方案。支持异地多活、大数据实时抽取、搜索实时更新数据、数据表结构重构、多视图数据存储、大屏实时刷新等。DRC在阿里服务了数万个实时通道,已经成为阿里的基础设施,重要性不言而喻。DRC需要保障数据库的事务一致性,包括DDL(表结构变更)也可以进行同步或过滤。而DBA天生就在这个坑里,绝对转载 2020-06-08 10:49:42 · 1940 阅读 · 1 评论 -
饿了么异地多活技术实现(一)总体介绍
https://zhuanlan.zhihu.com/p/32587960背景:饿了么随着业务量的增长,单个数据中心的容量无法支撑全部流量,同时传统机房冷备份方式的缺陷,促使饿了么异地多活应运而生;而作为多活重要组件之一的API-Router,扮演着客户端入口流量到后端机房路由的重要角色,当一个机房出现故障甚至宕机,可以实现机房快速切换。设计目标:1、入口流量可以根据sharding key规则路由到对应的机房(准确的说是ezone);2、配合机房切换规则,能实现流量的转移;3.转载 2020-06-08 10:47:56 · 802 阅读 · 0 评论 -
防重复请求处理的实践与总结
#防重复处理总结##背景在业务开发中,我们常会面对防止重复请求的问题。当服务端对于请求的响应涉及数据的修改,或状态的变更时,可能会造成极大的危害。重复请求的后果在交易系统、售后维权,以及支付系统中尤其严重。前台操作的抖动,快速操作,网络通信或者后端响应慢,都会增加后端重复处理的概率。前台操作去抖动和防快速操作的措施,我们首先会想到在前端做一层控制。当前端触发操作时,或弹出确认界面,转载 2015-04-30 16:29:40 · 659 阅读 · 0 评论 -
真正零停机 HAProxy 重载
Yelp 础设施团队的主要目标之一就是为了尽可能接近零停机时间。那也就是说当用户访问www.yelp.com 作出动作的时候,网站的响应速度必须尽可能的快。一种方法是使用 HAProxy 负载均衡能够保持 www.yelp.com 网站的响应速度。通常我们在任何地方都使用 HAProxy 来保持网站的外部负载均衡、内部负载均衡,甚至运用到构建面向服务的架构中。我们发现在 Yelp 的每台机器上运行转载 2015-04-27 10:28:30 · 2062 阅读 · 0 评论 -
使用ELK(logstash,elasticsearch,kibana)+redis搭建nginx日志分析平台
logstash,elasticsearch,kibana 怎么进行nginx的日志分析呢?首先,架构方面,nginx是有日志文件的,它的每个请求的状态等都有日志文件进行记录。其次,需要有个队列,redis的list结构正好可以作为队列使用。然后分析使用elasticsearch就可以进行分析和查询了。我们需要的是一个分布式的,日志收集和分析系统。logstash有agent和in转载 2015-04-10 16:39:10 · 2434 阅读 · 0 评论 -
孙玄:解析58同城典型技术架构及演变
在UPYUN主办的“UPYUN Open Talk ”第三期北京站上,58同城系统架构师孙玄详细介绍了58同城的商家(移动)管理平台的技术架构及演变历程,并就企业的核心O2O技术进行了专题的分享。孙玄表示,58同城是一个分类信息网站,涵盖房产、二手车、招聘、黄页等内容,在每一个类别里都能看到方便用户交流沟通的58帮帮。58帮帮分为IM部分和非IM的业务处理部分,目前,整个帮帮系统每天要处理转载 2015-04-10 15:23:45 · 2112 阅读 · 0 评论 -
理解HTTP幂等性
理解HTTP幂等性基于HTTP协议的Web API是时下最为流行的一种分布式服务提供方式。无论是在大型互联网应用还是企业级架构中,我们都见到了越来越多的SOA或RESTful的Web API。为什么Web API如此流行呢?我认为很大程度上应归功于简单有效的HTTP协议。HTTP协议是一种分布式的面向资源的网络应用层协议,无论是服务器端提供Web服务,还是客户端消费Web服务都转载 2015-03-18 18:36:23 · 407 阅读 · 0 评论 -
敏捷开发实践 拥抱变化的产品开发流程
随着Agile敏捷开发的流行,越来越多的公司采用敏捷开发用于软件产品和应用的开发。笔者的产品开发团队在两年前开始采用敏捷开发方法,一直实践到现在,并取得不错的成果,包括:产品功能更加符合市场和业务人员的需求,开发效率获得提高。本文从实践的角度介绍笔者所在团队的产品敏捷开发过程和作者的敏捷开发体会。敏捷开发体会实施敏捷开发近两年来,我对在产品开发中应用敏捷方法有着深刻的体会。首先说下产品背景转载 2010-03-11 13:59:00 · 860 阅读 · 0 评论