服务管理框架

Posted on Sat 31 December 2011 in it • Tagged with Architecture, SOA

使大型分布式系统大型服务化之后足高可用及低运营成本,新的系统架构需要满足以下条件:

1. 服务管理框架需要具备的功能

1.1. 容错性

failover:客户端容错支持,并支持自动失效探测及恢复调用; failfast:快速失败。很多远程服务调用是在关键路径中,它可以容忍失败,但是不能容忍堵塞; failback:故障恢复。能够快速定位错误,进行reset来尝试恢复。

1.2. 中心化的运营管理

【部署】动态启用及停用服务及节点:可以动态启动及停用服务(热发布); 【配置】配置及推送功能:所有client在同一时刻配置的一致性,并且client会跟配置中心保持长连接; 【性能及可用性】负载均衡策略:支持round robin,least active, consistent hash,或者基于脚本的动态路由策略。这个都是由配置中心来控制; 【监控】访问统计及动态运行参数查看:可以对方法级别进行访问统计及实时观察;

1.3. 开发支持

跨语言:支持client能使用常见主流语言来访问; 零侵入:架构对调用方式和具体业务逻辑透明 ...


Continue reading

淘宝技术沙龙后记

Posted on Mon 28 November 2011 in it • Tagged with aDev, Architecture, Asynchronous

淘宝马震的分享

周六参加了aDev(注)淘宝技术嘉年华技术交流,淘宝马震分享的《消息中间件在大型分布式系统的应用》非常不错。他们目前自行研发了Notify和Meta Morphosis两款中间件。后者是用Scala写得开源MQ Kafka的Java版(注)。

对技术架构和使用场景都进行了介绍。

消息中间件应用场景

分布式事务最终一致性:能够保证SOA架构下全局数据的最终一致; 数据复制:Binlog和日志都可以进队列。同类产品可以参考Twitter的Storm; delay queue(定时器):可靠的延迟队列,可以作为分布式环境下的定时器; 广播通知:避免广播风暴,可以为cache失效进行通知

感谢lazycai的分享和更正 ppt可以通过关注淘宝技术嘉年华: @taobaodeveloperclub 获得。 有关淘宝中间件的更多信息,参考 http://rdc.taobao.com/team/jm/archives/921

孙立的Fast Queue

ppt在这里: http://www.slideshare.net/sunli1223 ...


Continue reading

淘宝技术沙龙

Posted on Fri 25 November 2011 in 我记 • Tagged with aDev, Architecture, Asynchronous

明天去参加淘宝组织的技术沙龙。 地点:京仪大酒店第一会议室 时间:11年11月26日14:00 - 18:00

技术主题:异步化技术在大型系统中的运用

主讲嘉宾

淘宝网技术专家马震 新浪微博高级应用开发工程师史罗丹 去哪儿网高级系统架构师孙立

《消息中间件在大型分布式系统的应用》

马震(花名锋寒)淘宝网通用产品技术专家,负责消息中间件的研发,之前在Ericsson和金蝶中间件工作,我的师弟。 感兴趣领域:并发和网络编程,大型分布式系统的构建,海量数据的分析和处理。 主要分享内容: 淘宝消息中间件的功能和特性; 消息中间件在淘宝的典型应用场景:分布式事务、可靠性处理等

《高性能队列Fqueue的设计和使用实践》

孙立,@sunli1223,去哪儿网高级系统架构师,负责运维、DBA和公用系统开发团队,曾就职于凤凰网。 专注系统架构,性能优化,后端研发。微博活跃分子。 将会详细介绍Fqueue的存储设计原理、设计原因及各种适合使用场景。

《浪微博新版中的Bigpipe Server端的PHP实现》

史罗丹,@Rodin ...


Continue reading

SOA架构设计概要

Posted on Mon 07 November 2011 in it • Tagged with Architecture, SOA

主要内容也是来自《SteveY对Amazon和Google平台的长篇大论》

1. 通过服务接口提供全部数据和操作

我们理解的SOA必然是通过接口的方式将数据与功能开放出来的,但要想要往平台方向发展,必须保证用且仅用服务接口的形式提供数据和服务: 团队间的程序模块的信息通信,都要通过这些接口; 除此之外没有其它的通信方式。其他形式一概不允许:不能直接读取其他团队的数据库、不能使用共享内存模式、不能使用别人模块的后门; 所有的程序都必须从骨子里到表面都要设计成能对外界开放的。也就是说,团队必须做好规划与设计,以便把接口开放给全世界的程序员,没有例外。

2. 容错与服务保护

作为SOA服务中的开发者,既不能相信为自己提供服务的应用(Server),也不能相信访问服务的应用(Client)。 基本算老调重弹,因为没有无故障的软件,也没有无故障的硬件,再加上千奇百怪的网络条件和完全料想不到的客户,所以要处理异常(容错)才是正常逻辑;而每一个和你相关的团队突然间都可能成为一个潜在性的DOS攻击者。必须要为每一个Service设置配额(quota)与节流阀(throttling)的保护机制。

3. 监控与QA

仅有一个确定主进程不死的响应不是监控。如果测试覆盖到能验证所有业务逻辑的程度,当然是最好的。但我迄今为止,没见过太多的团队(仅有一个团队)完成了如此缜密细致的测试用例。 我觉得比较理想的监控系统要让业务人员“看到 ...


Continue reading

我们能在SOA架构里添加哪些特性?

Posted on Mon 10 October 2011 in it • Tagged with Architecture, SOA

新阳写了一个很棒的Thrift技术演进方案,甚至包含了架构基础代码。这个SOA方案有以下几个闪亮的特性: 1. 可用性:消除单点故障隐患,提供水平扩容的基础; 2. 可维护性:提高服务监控的粒度、规范化程度、自动化程度 3. 可改进性:包括Client端调用方式和Server端实现方式 这个方案最大的亮点就是层次分明:虽然是为Thrift量身定做的技术架构,但这些特性对采取什么具体技术来说并没有强制性的要求。

那么还有没有其它需求可以在SOA框架中满足呢?判断标准又是什么呢?我给出我的思考,希望能看到大家的真知灼见。

首先先给出选择特性的基本原则,然后讨论要为需求提供的特性及实现思路。 基本原则


  1. 适用性原则 在架构层面被满足的需求应该是对大多数服务来说都必须要满足的需求。 从公司业务情况来看,高可用性、水平可扩展性(Scale out)、可维护性等是所有服务都必须满足的特性。
  2. 投入产出比原则 主要考虑两方面因素,架构层面实现特性的代价和具体应用获得特性的代价。 举例来说,如果想要的特性在具体业务中的表现是不一样的,那么在架构上实现这个特性时还得考虑到具体业务的场景,那么直接把这个特性放到具体应用中就更合理; 如果具体应用能够添加一个组件或者依靠继承来获得架构特性,这个代价就是合理的。
  3. 轮子原则 大家都知道,在工作中不要重新发明轮子,用现成的就好了。 再往具体了说,如果有现成的工具或系统能支持的特性,一般来说不要带到架构层面实现了 ...

Continue reading

[推荐]一篇介绍数据挖掘系统架构的文章

Posted on Tue 19 July 2011 in 我记 • Tagged with Architecture

云时代的企业应用数据挖掘:http://www.programmer.com.cn/7280/

1. 三火点评

本文从概念和架构层面给出了异构数据源海量数据挖掘的工作思路。

在系统建设过程上,分为建模、挖掘和呈现三个阶段;

在系统架构上,包括支持海量数据的分布存储部分、支持高速并行运算的MapReduce部分和高效的BI呈现部分。

对从事相关工作的产品运营和技术实施人员都有参考价值。

2. 问题:如何对异构异源的数据进行数据挖掘,是云时代的企业面临的难题

2.1. 挖掘效率

面对引入互联网应用后海量的异构数据时,目前的挖掘算法效率很低。

2.2. 多源数据

引入云计算后,企业数据的位置有可能在提供公有云服务的平台上,也可能在企业自建的私有云上,如何面对不同的数据源进行挖掘也是一个挑战。

不同应用的数据整合、全球部署等问题,使多源问题更加复杂。

2.3. 异构数据

Web数据的最大特点就是半结构化,包括文档、报表、网页,甚至声音、图像、视频等,而云计算带来了大量的基于互联网模式提供的SaaS应用,如何梳理有效数据是一个挑战。

3. 适合云应用数据挖掘的模式建议 ...


Continue reading

QCon第一天见闻

Posted on Sat 09 April 2011 in 我记 • Tagged with Architecture, QCon

昨天回家就被感冒病毒和化脓的扁桃体给击倒了。不过经过一晚的充足睡眠和apple的精心照料,今天我又生龙活虎了。

简单回顾一下昨天的会议吧。BTW,ppt已经都提供下载了,会议主办者相当给力。 上午三场的看点如下:

Nicolas Spiegelberg的《支撑Facebook消息处理的HBase存储系统》

评价:4星 每月14TB的消息数据是怎么处理的呢?MySQL怎么迁移到HBase呢? 有兴趣的都去看ppt吧。

David Hussman的《在实践中实现企业的敏捷性》

评价:4星

精妙的比喻比比皆是。在组织内、间、外实施敏捷需要考虑哪些问题。很有借鉴性。

Oracle的《Java EE 7平台:走进云计算》感觉有点儿远,都是神马和浮云啊。

下午分工如下:网址案例-我;敏捷转型-明飞;NoSQL-王晨

潘晓良 - 为速度而生——百姓网如何优化网速

评价:4星 挺质朴的。内容不多,但都是干货。 推荐一下。

杨卫华 - 构建高性能的微博系统——再谈新浪微博架构

评价 ...


Continue reading

ThoughtWorks Technology Radar

Posted on Thu 16 December 2010 in it • Tagged with Architecture, 技术路线, 职业规划

ThoughtWorks在技术领域的前瞻性报告“技术雷达”,对IT公司的技术选型、开发人员在职业规划中选择技术路线都有借鉴意义。 http://www.thoughtworks.com/radar/ 目前“技术雷达”分为技术、工具、语言和平台四个领域: Techniques方面,我对以下几个比较感兴趣

    2. Scrum certification 4. DevOps 6. Automation of technical test
Tools方面:
    24. Apache camel 25. Next gen test tools 26. NoSQ
Platforms
    53. Google App Engine 62. EC2 & S3
Languages
    36. Java ...


Continue reading

现有架构中数据存储面临的挑战与应对

Posted on Sun 18 July 2010 in 我思 • Tagged with Architecture, CAP, Database

传统数据库方案(Oracle)面临的挑战

  1. High Performance: 高并发的读写
    • 高并发读写造成的锁等待问题
  2. Huge Storage: 海量数据的存储和访问
    • 传统数据库对海量XML数据结构的存储解决方案不太友好,类似vCard的存储
  3. High Scalability & High Available: 高扩展性和高可用性
    • 传统数据库Scale Out的解决方案复杂性高(业务相关的)且代价高

现有架构中数据存储面临的挑战

OLTP到OLAP的数据同步,实时性要求越来越高

我们很早就做到了OLTP和OLAP系统分开的:

  • OLTP(On-Line Transaction Processing)联机事务处理:OSS
  • OLAP(On-Line Analytical Processing)联机分析处理:DA-Server, SBX
但越来越多的数据分析需求,要求能够获得实时性性更高的数据。而高实时性会增加同步的代价。

业务间对共有数据操作的竞争

由于现有的数据库设计并没有对用户数据和业务数据进行逻辑上的区分,所有服务对用户数据都有相同的权限,操作同一块用户数据引起的问题无法从根本上进行避免。

业务间对数据库资源的竞争

目前的数据库是建立在一个Oracle实例(并且在一个用户下)中的,同时为杀毒 ...


Continue reading

网络应用系统设计的基本原则

Posted on Fri 07 May 2010 in 我思 • Tagged with Architecture, FreeWheel, QCon

昨天和一个同事闲聊,说起了他近期在做的工作,一个信息聚合系统。在设计开发时没遇到什么问题,但到了真正部署,每次部署都会冒出之前没有想到的问题,使系统不能真正上线。听他讲完,我立刻想起了以前看过的ppt《Hadoop取舍之间──高性能、高流量和多数据中心互联网应用架构设计》中提到的一个重要原则:Design with failure in mind。当时和这个同事一起分享了这个原则和KISS原则。脑子里面又回想了另外几个和架构有关的原则。觉得对当前工作还是挺有意义的,应该和大家一块分享。

这篇ppt的作者信息,来自FreeWheel,这个ppt的原文请自己google吧,网上挺多的。

当时关心这篇文字,是对Hadoop感兴趣,不过这个ppt最后告诉大家,他们觉得Hadoop不适合自己,最后自己搞了一个类似的系统。这部分可以不看了,因为毕竟现在已经有很多公司成功部署了基于自己业务的Hadoop应用,每天好几个TB的数据都处理得很好。但本文前半部分提到的系统架构设计的六个原则,还是留下了很深的印象:

- 系统功能

KISS原则: keep it simple and stupid

从目前来看,最不符合这个原则的地方就是需求了。参加需求评审的时候,经常看到复杂度很高的功能点,比如决定是否给一个用户推送一条消息 ...


Continue reading

QCon第三天见闻

Posted on Sun 25 April 2010 in it • Tagged with Architecture, QCon, SOA

感觉今天两个主题搭配的不错,应该很少有同时关注服务架构和前端开发的人。不过听了淘宝小马的发言,好像也不是那么回事,前端的工程师也是很关心架构的。

下面开始记录今天的流水账,第一个议题是InfoQ团队介绍,米国、罗马尼亚、加拿大和中国的,台上站满了,一共11个左右,挺精干的组成。

Jim Webber《使用 REST构建成功的SOA》 - 四星

第一场是Jim Webber演讲《使用 REST构建成功的SOA》。Jim是个很精悍的小个子,像个海军陆战队员。他的演讲特点就是非常有激情。他讲的重点主题有两个,一个是数据库并不适合扩展性,建议大家都NoSQL吧,然后给出了在安全性、事务性方面的解决方案;第二个是倡导基于HTTP的中间件,人家就是将REST的嘛。很不错。

谢恩伟《微软 Azure云计算平台的应用与发展》 - 三星

第二场是来自微软工具和平台事业部的谢恩伟讲《微软 Azure云计算平台的应用与发展》。老实说我觉得讲得还可以,ppt里面给出了微软的云计算定义、云计算内涵,对微软的战略给出比较清晰的描述。会后给评价,贴了笑脸儿。

萧百龄《性能 ...


Continue reading

QCon第二天见闻

Posted on Sat 24 April 2010 in it • Tagged with Agile, Architecture, QCon, Scrum

今天是QCon的第二天。

Tom Mellor《Agile和Scrum在中国能不能成功》- 三星

开场本来应该是设计模式15年──向设计模式2.0迈进》,因为火山灰的缘故,Erich Gamma不能到场,还真是有点儿遗憾。不过Scrum Alliance总裁Tom Mellor的《Agile和Scrum在中国能不能成功》也挺有意思的。我是头一次听说这位大叔,身份信息参考这篇文 章。汤大叔对Scrum的造诣非常深,在他的演讲中提了3个指导意见:

1. Ask Team,体现了对团队的授权和信任;

2. 持续审视和调整,指出了过程改进中最关键的方法;

3. Delivery Fast,一切软件过程改进的核心目标

Marc Kwiatkowski《Facebook 的扩展Memcached实战》- 三星

第二场是Marc Kwiatkowski的《Facebook 的扩展Memcached实战》。整场讲座投影仪黑掉了n次,这位仁兄涵养真好,每次出问题都自我检讨说I"m ...


Continue reading

QCon第一天见闻

Posted on Fri 23 April 2010 in it • Tagged with Architecture, Program Language, QCon

今天是非常充实的一天:早上7点起床,8点出发,9点进场,上午2场下午4场主题演讲听得非常过瘾,到家后头脑还非常兴奋,开始准备整理一下思维,记录一下今天听讲的感想。

一开场,主持人就告诉大家一个消息,Erich Gamma因为冰岛的火山灰原因,无法出席本次QCon了,他自己深表歉意,并承诺,下次他来北京演讲,本次参加的人都可以去免费听,作为补偿。

Michael Nygard - 《失败来临的征兆》-四星

这是第一个演讲,当时坐得有点儿远看不清楚ppt,听得有些云山雾罩。这里有人做了笔记,回来仔细看了看,觉得很不错。

首先给了两个假设: 1. 用户关注功能而不是你使用什么软件硬件; 2. 失败和错误总会发生。然后引出了工程化失败模型。

工程化失败模式(Engineering Failure Modes)

  1. 容忍:将震荡吸收,而不是传递它
  2. 服务能力:功能缩水而不是整个损坏
  3. 恢复能力:允许组件重启,而不是让整个世界“重新启动”
  4. 弹性:能够从瞬时性 ...


Continue reading

SaaS迁移模式

Posted on Thu 08 April 2010 in it • Tagged with Architecture, SaaS, SOA

原文: http://horicky.blogspot.com/2010/01/roadmap-to-saas.html

托GFW的福,我们看不到Richy Ho写的博客,更看不到Roadmap to SaaS里面的示意图。但这篇文章真的很不错,文字很简单,翻译出来和大家分享。

以下进入正文:

我发现了如何从传统Web应用一步一步迁移到SaaS的迁移模式。我会用一个J2EE的web应用架构做示例进行讲解,但对于其他技术平台来说,也是一样的。

1. 初始的web应用

At the very beginning, we have an web application that works well. We analyze the function of the web application and group the implementation classes ...


Continue reading

基于Spring的分布式技术架构

Posted on Tue 01 December 2009 in it • Tagged with Architecture, cluster, remoting, Spring

从检索到的资料来看,基于Spring的分布式技术架构已经很成熟了,虽然现在因为资源问题,调研暂停了,但这个技术方向是没问题的,完全可以在实践中来构建。

  1. Web Services with Spring 2.5 and Apache CXF 2.0
  2. Remoting and web services using Spring
  3. spring下分布式事件通知服务框架
  4. spring分布式事务(jotm)
  5. 使用分布式缓存来群集Spring远程服务
  6. spring-remoting-cluster: Google的开源框架,有时间研究研究

Continue reading