Suche senden
Hochladen
轻量分布式服务框架
•
11 gefällt mir
•
2,638 views
-Xing Xing
Folgen
Technologie
Melden
Teilen
Melden
Teilen
1 von 21
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
Vue for beginners
Vue for beginners
m_catt
十分钟构建高性能微信后台
十分钟构建高性能微信后台
dcshi
Redis 坑
Redis 坑
fulin tang
Aches y Petros
Aches y Petros
Maria Cavalieri
Cbl
Cbl
agdudi
Apresentação Rede Novas Oportunidades alentejo (Rnoac)
Apresentação Rede Novas Oportunidades alentejo (Rnoac)
cnovendasnovas
雪球服务化实践历程.Print
雪球服务化实践历程.Print
fulin tang
美团点评技术沙龙13-前端工程化开发方案app-proto介绍
美团点评技术沙龙13-前端工程化开发方案app-proto介绍
美团点评技术团队
Weitere ähnliche Inhalte
Ähnlich wie 轻量分布式服务框架
使用NodeJS构建静态资源管理系统
使用NodeJS构建静态资源管理系统
Frank Xu
Parse, cloud code 介紹
Parse, cloud code 介紹
wantingj
新浪云计算公开课第一期:Let’s run @ sae(丛磊)
新浪云计算公开课第一期:Let’s run @ sae(丛磊)
锐 张
Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境
Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境
drewz lin
Yog Framework
Yog Framework
fansekey
Lean Message Architecture Highlights
Lean Message Architecture Highlights
sunng87
LeanMessage 实时通信云架构
LeanMessage 实时通信云架构
wenny yuan
Mvc
Mvc
tbmallf2e
Glider
Glider
windyrobin
CKAN 技術介紹 (開發篇)
CKAN 技術介紹 (開發篇)
Chengjen Lee
Hacking Nginx at Taobao
Hacking Nginx at Taobao
Joshua Zhu
高性能远程调用解决方案
高性能远程调用解决方案
Ady Liu
Micro service
Micro service
rfyiamcool
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践
taobao.com
twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧
twMVC
Ria的强力后盾:rest+海量存储
Ria的强力后盾:rest+海量存储
zhen chen
海通证券金融云思考与实践(数据技术嘉年华2017)
海通证券金融云思考与实践(数据技术嘉年华2017)
Zhaoyang Wang
纵览Loadrunner核心功能
纵览Loadrunner核心功能
beiyu95
开源应用日志收集系统
开源应用日志收集系统
klandor
Zh tw introduction_to_map_reduce
Zh tw introduction_to_map_reduce
TrendProgContest13
Ähnlich wie 轻量分布式服务框架
(20)
使用NodeJS构建静态资源管理系统
使用NodeJS构建静态资源管理系统
Parse, cloud code 介紹
Parse, cloud code 介紹
新浪云计算公开课第一期:Let’s run @ sae(丛磊)
新浪云计算公开课第一期:Let’s run @ sae(丛磊)
Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境
Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境
Yog Framework
Yog Framework
Lean Message Architecture Highlights
Lean Message Architecture Highlights
LeanMessage 实时通信云架构
LeanMessage 实时通信云架构
Mvc
Mvc
Glider
Glider
CKAN 技術介紹 (開發篇)
CKAN 技術介紹 (開發篇)
Hacking Nginx at Taobao
Hacking Nginx at Taobao
高性能远程调用解决方案
高性能远程调用解决方案
Micro service
Micro service
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践
twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧
Ria的强力后盾:rest+海量存储
Ria的强力后盾:rest+海量存储
海通证券金融云思考与实践(数据技术嘉年华2017)
海通证券金融云思考与实践(数据技术嘉年华2017)
纵览Loadrunner核心功能
纵览Loadrunner核心功能
开源应用日志收集系统
开源应用日志收集系统
Zh tw introduction_to_map_reduce
Zh tw introduction_to_map_reduce
Kürzlich hochgeladen
函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptx
函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptx
NCU MCL
20170104 - transaction_pattern
20170104 - transaction_pattern
Jamie (Taka) Wang
20161027 - edge part2
20161027 - edge part2
Jamie (Taka) Wang
函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptx
函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptx
NCU MCL
SymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptx
SymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptx
NCU MCL
买假和真英国驾驶执照买了假的英国驾照,那跟真的有什么区别吗?买假和真正的澳大利亚驾驶执照【微信qoqoqdqd】
买假和真英国驾驶执照买了假的英国驾照,那跟真的有什么区别吗?买假和真正的澳大利亚驾驶执照【微信qoqoqdqd】
黑客 接单【TG/微信qoqoqdqd】
函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptx
函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptx
NCU MCL
20151111 - IoT Sync Up
20151111 - IoT Sync Up
Jamie (Taka) Wang
SymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptx
SymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptx
NCU MCL
20211119 - demystified artificial intelligence with NLP
20211119 - demystified artificial intelligence with NLP
Jamie (Taka) Wang
20200323 - AI Intro
20200323 - AI Intro
Jamie (Taka) Wang
20200226 - AI Overview
20200226 - AI Overview
Jamie (Taka) Wang
函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptx
函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptx
NCU MCL
20161220 - domain-driven design
20161220 - domain-driven design
Jamie (Taka) Wang
Entities in DCPS (DDS)
Entities in DCPS (DDS)
Jamie (Taka) Wang
Kürzlich hochgeladen
(15)
函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptx
函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptx
20170104 - transaction_pattern
20170104 - transaction_pattern
20161027 - edge part2
20161027 - edge part2
函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptx
函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptx
SymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptx
SymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptx
买假和真英国驾驶执照买了假的英国驾照,那跟真的有什么区别吗?买假和真正的澳大利亚驾驶执照【微信qoqoqdqd】
买假和真英国驾驶执照买了假的英国驾照,那跟真的有什么区别吗?买假和真正的澳大利亚驾驶执照【微信qoqoqdqd】
函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptx
函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptx
20151111 - IoT Sync Up
20151111 - IoT Sync Up
SymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptx
SymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptx
20211119 - demystified artificial intelligence with NLP
20211119 - demystified artificial intelligence with NLP
20200323 - AI Intro
20200323 - AI Intro
20200226 - AI Overview
20200226 - AI Overview
函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptx
函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptx
20161220 - domain-driven design
20161220 - domain-driven design
Entities in DCPS (DDS)
Entities in DCPS (DDS)
轻量分布式服务框架
1.
轻量分布式服务框架 Skynet 分析与应用
邢星(mikespook) mikespook@gmail.com http://mikespook.com weibo & twitter @mikespook
2.
云之神话 ●
资源共享 ● 软件即服务(SaaS) ● 按需分配 ● 平台即服务(PaaS) ● 隔离抽象 ● 基础设施即服务(IaaS) ● 服务式使用 ● ......(XaaS) ● 自助化/自动化 ● ......
3.
我们有什么? ●
Google App Engine ● Google Compute Engine ● Amazon Web Service ● Heroku ● Openhift ● DNSPod ● 监控宝 ● 七牛云存储 ● ......
4.
够了吗? ● 物理瓶颈——跨洲际、大延迟、不可控制 ● 政策风险——被墙、支付困难、沟通不顺 ●
历史负债——一个不可拆分的核心服务 老板信任吗?
5.
拍脑袋 ● 租赁SaaS对外围功能进行支撑。 ● 用
OpenStack 什么的,自建私有云…… 对于核心业务…… 这样有意义吗?
6.
最终倒在了一个无法云化的核
心业务系统上?
7.
Brain Ketelson ● 一个巨大的代码单元实现的大应用,很难在不
带来麻烦的前提下,对某些部分进行微小的修 改。 ● 更小的组件允许在不影响其他部分的前提下 进行调整,也更容易通过增加服务器的方式增 加更多的服务节点来提升系统容量。
8.
新的问题 ● 服务组件碎片化 ● 服务总线成为瓶颈 ●
管理单元带来的单点隐患
9.
Skynet - 分布式服务框架 ●
使用 Go 语言编写 ● 用于在分布式应用中,同服务进行通讯 ● 重度依赖 Doozer ● 无需管理节点,服务自我完备 ● 开源,社区活跃
10.
Doozer 用于存储小量、极端重要的数据,保证了高可用和完全一致 性。当数据变化时,它立刻通知接入的客户端(无缓存)。对于 那些很少更新,但是希望更新发生时实时性高的客户端来说 是非常理想的。
11.
Doozer ● 最初由 Heroku
的工程师开发并开源 ● 轻量版 ZooKeeper ● 实现 Paxos 算法 “Skynet 服务都活在哪?”
12.
Skynet 怎么使用 Doozer
13.
整体架构
14.
服务 ● 接口 type ServiceDelegate
interface { Started(s *Service) Stopped(s *Service) Registered(s *Service) Unregistered(s *Service) } ● 调用原型 func (ri *skynet.RequestInfo, req interface{}, resp interface{}) error
15.
声明 ● 请求和响应 type MsgRequest
struct { Sender, Receiver, Data string } type MsgResponse struct { Code int } ● 服务 type MsgService struct { // 消息发送服务所需数据 }
16.
实现 func (s *MsgService)
SendMsg( ri *skynet.RequestInfo, req *MsgRequest, resp *MsgResponse) error { // 发送消息的代码 return err }
17.
主函数 func main(){
s := &MsgService{} config, _ := skynet.GetServiceConfig() config.Name = "MsgService" config.Version = "1" config.Region = "Development" srv := service.CreateService(s, config) defer srv.Shutdown() waiter := srv.Start(true) waiter.Wait() }
18.
客户端 config, _ :=
skynet.GetClientConfig() clt := client.NewClient(config) req = &MsgRequest {Sender: "user1", Receiver: "user2", Data: "Blablabla..."} resp = &MsgResponse{}
19.
客户端 srv := clt.GetService(
"MsgService", "1", "Development", "") if err := srv.Send(nil, "SendMsg", req, resp);err != nil { fmt.Println(err) } else { fmt.Println(resp.Code) }
20.
轻量分布式服务框架 ● 需要分布式、高可用的协调服务 ○
Zookeeper/Doozer/ESB ● 开放的通讯协议有助于跨语言的服务调用 ○ Protobuf/BSON/JSON/XML/SOAP ● 民主制负载均衡消除了裁判服务的单点隐患 ○ 服务端发布自身状态,客户端根据状态进行选择 ○ 民主带来的风险 ● 每个人都有自己的天堂 ○ Doozer, Skynet ○ Zookeeper, Norbert ○ MQ/Redis/Memcache...
21.
延伸阅读 1.
美国国家标准与技术研究院对云计算的定义 ○ http://csrc.nist.gov/publications/nistpubs/800-145/SP800-145.pdf 2. 什么是 GAE ○ https://developers.google. com/academy/apis/cloud/appengine/intro/whatisgae 3. Norbert,LinkedIn 发布的基于 Zookeeper 的轻量分布式开源框架 ○ http://data.linkedin.com/opensource/norbert 4. ZooKeeper 之道 ○ https://cwiki.apache.org/confluence/display/ZOOKEEPER/Tao
Jetzt herunterladen