AirJD 焦点
AirJD

没有录音文件
00:00/00:00
加收藏

后SOA主义:微服务架构演化之路 by 欧阳辰

发布者 microservice
发布于 1466038356758  浏览 5007 关键词 微服务, 架构 
分享到

第1页

后SOA主义: 微服务架构演化之路

欧阳辰

2016.4.23



第2页

2016-4-23



第3页

我是谁?

欧阳辰 开发主管



高级开发经理/工程师



研发主管/架构师



企业软件

• >15年的软件研发经验 • www.ouyangchen.com



互联网

10年



移动互联网



第4页

今天的话题

• 对软件架构的几个观点 • 几个架构演化的历程 • 微服务实践的血泪之歌 • 让解耦更加彻底一些 • 如何让架构“活在当下”



第5页

对于架构的主要观点

• 一切抛开业务的架构设计都是耍流氓 • 软件架构是学习和演化,不是蓝图 • “过往不念,当下不杂,未来不迎” • 微服务架构的未来不是梦

业务 数据

工程



第6页

小米广告的架构演化

流量10X 业务线10X



第7页

小米广告的技术架构



LVS Nginx



Z



o Java



Paoding-Rose



o



k e



Thrift



Lucenc e



e



p



e r



MySQL



HBase



HBase HDFS



Hive/Pig/Impal a

Hadoop



JIRA



Maven



Git,Nexus



Open-Falcon



Redis



HBase



Kafka

Storm Druid



Spark



XBox



Amazon AWS



MARATHON/Mesos /Docker



第8页

小米广告平台演化阶段

1. “加”:新业务疯狂上线,耦合 2. “减”:服务化,解耦 3. “乘”:微创新,引入新技术 4. “除”:抽象,平衡



第9页

什么是架构?

• 软件架构一般来说组织成视图(逻辑,设 计,部署等)(IEEE)

• 所有架构都是设计,不是每个设计都是 架构。架构代表着发展一个系统的重要 设计决策,这个重要性是通过变化引入 成本来衡量的(Grady Booch, 06)

• “一切圣贤,皆以无为法而有差别” (金刚经)

• 架构是学习和演化,不是蓝图(Chen)



第10页

架构师和建筑师



第11页

什么是业务?

• 业务就是Business: 收入-成本=利润 • Shareholders: 业务,用户,客户,领域专家 • 码农的工作分为三种:

• 提升收入 (新业务等) • 降低成本(开发成本,变化成本等) • 提供洞察 (数据的商业价值)



第12页

水平扩展一切(Scale out Everything)

《大型网站技术架构》



第13页

架构演化:Stack Overflow-Scale Up

1.这个软件架构是很"烂"(Boring)的 2.保持一个很“烂"的架构是非常有趣 的

“未来不迎”!



第14页

你需要微服务化么?



理想很丰满,现实很骨感!

并行化,异步调用



Front Door/View Middle Tier Database



Front Door



Front Door



Service Service



Service



Service



Service Service



Service Service



Database



Database



第15页

架构的演化—搜索引擎

收入->相关性:NDCG  Side By Side  用户的行为 成本->索引:Software , Hardware , Data



第16页

架构的演化—广告的演化



http://dirlt.com/computational-advertising.html



业务:变现能力

• eCPM=Bid*CTR的最大化 • CTR 预估模型内存需求暴



• 各种实验的支持(工程&算 法)

• 流动的数据



第17页

小米MIUI迭代和应用趋势



• 小米MIUI 的发布周期

• 体验版:每日发版(几十万内测)

• 开发部:每周发版(几百万公测)

• 稳定版:每月发版(全体推送)



• MIUI应用的趋势



单 MIU 发 I RO M



Hyb rid H5



H5 Do mi nat



ed



第18页

架构演化—技术的选择



• eBay

• Perl  C++ Java ->Micro Services

• 微软

• C++ .NET  SOA

• Amazon

• C++ -Java/ScalaMicro Services

• 京东

• ASP.NET Java  SOA/Infrastructure

• 小米网

• PHP->SOA/GOLANG



• 开源 ,自主发展,中间道路 • 从你熟悉的技术开始 • 技术为业务而生



第19页

技术选择—小米开源之道



• 从开源走来 • 业务驱动的改进 • 贡献开源

例如:HBase应用于云服务



我们有三位HBase Committer!



Apache Kylin



Cloudera Kudu



第20页

失控,组织和演化

• 自组合,去中心化 • 容错性,分布式 • 群体,量变到质变 • 网络经济学 • 电子货币 • 人工进化

• 死亡是最好的老师

• 学习和进化的区别



第21页

Randy的可扩展架构7原则

• 按功能分区(Partition by Function) • 水平切分 • 避免事务 • 异步解耦 • 次序流改进为异步 • 虚拟化所有层次 • 适当使用缓存



第22页

我的解耦4大基本原则和技术

原则 • 先业务,后技术;先逻辑,后物理 • 奥卡姆剃刀:如无必须,勿曾实体 • 正交性:分解出模块无职责的重复 • 稳定性原则:稳定和易变的分解

技术 -接口 -消息队列 -模块化,服务化 -异步化



第23页

架构师的OKR或KPIs

• 关键指标 (One Metric That Matters) • 向业务负责 • 帮助团队获得满足感 • 随时回答团队的问题 • 保持谦逊和诚实



第24页

总结

• 一切抛开业务的架构设计都是耍流氓 • “过往不念,当下不杂,未来不迎” • 微服务架构的未来不是梦



管理 组织



技术 文化



第25页

架构师/微服务:道阻且长,行则将至



www.ouyangchen.com 欧阳辰

广告架构,大数据和观察

“致力于中国互联网广告技术的繁荣”!



不忘初心,方得始终



支持文件格式:*.pdf
上传最后阶段需要进行在线转换,可能需要1~2分钟,请耐心等待。