WeiboMesh
—微博研发中心/周晶
内容提要
Ὂ为什么要做跨语言服务化ὊPHP跨语言服务化所面临的挑战ὊWeiboMesh与泛服务化附能PHP微服务
为什么要做跨语言服务化
为什么要做跨语言服务化
Ὂ痛点Ὂ趋势
೨㵩
需求·性能·成本
̨̻ᠧӻ
API+JAR
चԭOpenDCPጱ୨ԯᦇᓒ
2009
2013
2015
2016
ཛྷࣘ۸֛ܔ๐ۓ
RPC
Ⴐݳԯ
चԭMotanRPCጱங๐ۓ
̨̻ᠧӻ
䕂ٙءe䕆ሿᨮѩፅeࠥᕆeࠢݴ߆ᕆ䕏ፊછІ䕃ʷ࢙ඎᦧП౽ঐ୨ܓ᧣І䕃ಘᖽ࢙᧗Ӌ䕃ா༩͟
3FHJTUSZ
0QFO%$
1 +"7"4FSWFS+"7"$MJFOU $ 03 (
P 1)
1 n ฆ௹Ȩѓᕁ̍ฆ௹ᦾ᷌."1* ฆ௹ฤ॰ᅾ䔊ฆ௹ฆ௹˴१n ̨̻ᠧӻ 3FTUGVM"1*+BWB31$ ۠ 微服务·容器化·云化·标准化·工程化 更快的交付更低的成本服务与实现方式不应该有强耦合关系 PHP跨语言服务化所面临的挑战 跨语言服务化核心问题 ʹʝԊʕͭeεԊ)551(31$1#nطଣ㣇̙ݺಘ࢝䕂ٙء䕆ሿᨮѩፅn 挑战一:迁移成本与性能 Server istryReg GRPC Registry SubsNcribe otify Client Motan-PHP-Client 挑战二:服务治理与RPCServer LVS、HA、Nginx PHP-FPM ClusterHA+LBPHP-GRPC GRPCCall 䕏ሿϓ͉طଣঐɢ WorkingNode PHPDeamon NginxTimer GlobalData Discover Server1Server2 …… Registry Registry ❌PHPServerGRPC 经验总结 1)1䕂ʷٙሿᇫ-/03.1ݖᦻʹ˹ࣖଟ䞍ϓ͉n1)1Ԋ͉Ԓٙ҅ࠢঐ੬Ḧঐɢn㣇̙ݺಘٙ࢝䕂طଣڢʕːʷ$ࠠڢMJFOUn 我们需要适合自己的跨语言解决方案 ʹʝsطଣ 跨语言服务化方式对比 Ꮈݎ౮ᖌಷ౮ֵአ౮လቘᚆێಘᚆێ HTTPդቘ֗֗֗Ӿ֗ RPCཛྷࣘṛṛ֗ṛӾ AgentդቘӾӾӾṛṛ 交互(语言中立、多语言) 协议 HeaderPayload MotanHeader MetaDataSizeDataReqBodySizeData 序列化 基础类型复合类型 治理(灵活可扩展) WM-proto 㣇̙ݺಘٙ࢝䕂طଣ 1)1 /snapshot/ (P"HFOU 3FHJTUSZ +"7"4FSWFS+"7"$MJFOU Motan-PHP跨语言调用 if($connection->buildConnection($agent_addr)){$this->_url_obj->setEndpoint(Constants::ENDPOINT_AGENT);$this->_endpoint=newAgent($this->_url_obj); }else{$this->_endpoint=newCluster($this->_url_obj); } Motan-PHPCluster直连策略 publicfunctioncall(){ return$this->_ha_strategy->call($this->_load_balance);} AGENT_RUN_PATH."/snapshot/".$this->_group.'_'.$this->_service_str; Endpointerಘכବ PHP做Server 1)
1 $(*e)551 (P"HFOU 3FHJTUSZ +"7"4FSWFS+"7"$MJFOU Motan-GoProvider与PHP extFactory.RegistExtProvider(CGI,func(url*motan.URL)motan.Provider{ return&CgiProvider{url:url}}) extFactory.RegistExtProvider(HTTP,func(url*motan.URL) motan.Provider{ return&HTTPProvider{url:url} }) MOTAN_* [MOTAN_M_p]=>.weibo.motan.HelloWorldService[MOTAN_SERIALIZATION]=>simple[MOTAN_M_g]=>motan-server-mesh-example[MOTAN_M_m]=>Hello[MOTAN_M_pp]=>motan2 03(
P 1)
1 $(*e)551 (P"HFOU 3FHJTUSZ +"7"4FSWFS+"7"$MJFOU WeiboMesh与泛服务化附能PHP微服务 传统PHP服务化演进 API+COMMON चԭVanillaጱAPIGateway … 2012 2015 2016 …… ཛྷࣘ۸๐ۓ PHP-BE Vasina चԭPHP-BEጱங๐ۓೆړ APIGateway与服务治理 * LVS、HA Respons Vasina 公共逻辑…PageCache LRU/ShDictᴳᕆ̵ᆤෙ SYSConf… SubRequest 内网调用 PHP-FPM News CacheAPI …… PHP-FPM Ads …… PHP-FPM Userinfo …… ServiceMesh是什么 Aservicemeshisadedicatedinfrastructurelayerforhandlingmunication.It’sresponsibleforthereliabledeliveryofrequeststhroughthe ologyofservicespriseamodern,cloudnativeapplication.Inpractice, theservicemeshistypicallyimplementedasanarrayofworkproxiesthatare deployedalongsideapplicationcode,withouttheapplicationneedingtobeaware. https://buoyant.io/2017/04/25/whats-a-service-mesh-and-why-do-i-need-one/ ServiceMesh是什么 dedicatedinfrastructurelayerhandlingservice-to- munication ologyofservices Inpractice workproxies withouttheapplicationneedingtobeaware https://buoyant.io/2017/04/25/whats-a-service-mesh-and-why-do-i-need-one/ "1*(BUFXBZ 4FSWJDF
" 4FSWJDF # 4FSWJDF $ "1*(BUFXBZ NJDSP4FSWJDF " 4FSWJDF # 4FSWJDF $ "1*(BUFXBZ NJDSP4FSWJDF " 4FSWJDF # 4FSWJDF $ 4FSWJDF.FTI "1*(BUFXBZ NJDSP4FSWJDF " 4FSWJDF # 4FSWJDF $4FSWJDF ༆ᇩsɨӐ 4FSWJDF.FTI 4FSWJDF.FTI ᭗מ๐ۓလቘdedicatedinfrastructurelayer 业界ServiceMesh实现 ݷᑍ ࠟܯ istio Google̵IBM̵Lyft conduit Buoyant nginmesh Nginx Linkerd Buoyant serviceComb HUAWEI ᇇ
0.7.10.4.10.7.21.4.01.0.0 चᰂCNCF //CNCFApache ServiceMesh事实规范 %BUB1MBOFjӫء4FSWJDF䞯᧗ӋහỼփ䜲dҁϓ䕂ʘ䞯ٙʹʝ$POUSPM1MBOFjӫء䕂طଣeݴඎ༩͟eಗБഄଫഃ istio DIFDL SFQPSU .JYFS 4USBUFHZ 4FSWJDF " ServiceContainer &OWPZ DataPlane &OWPZ $" .JYFS ControlPlane Y%
4 SPVUFS "1*.PEFM"EBQUPS 1JMPU ,
4 .FTPT 4FSWJDF # ControlPlane WeiboMesh -JHIU$MJFOU 4FSWJDF " ServiceContainer 䁑ഄӻ䕠ݴඎ᧣ܓ 䕃䕃ா˿၍ଣᠧӻІ 䕂ܸ 8FJCP .FTI 8FJCP .FTI 3FHJTUSZ DataPlane -JHIU$MJFOU ControlPlane 4FSWJDF # ControlPlane WeiboMesh泛服务化 4FSWFS(P03+"7"1)1.$3FEJTn .PUBO.$3FEJTn8FJCP.FTI .PUBO 8FJCP.FTI $MJFOU.PUBOn (P03+"7"1)1n 服务的刻画/MotanSchema ๐ܐۓᦓ 版本号 Service grpc://host:port/0.1/helloworld.Greeter?
group=idevz-test ፓຽᜓᅩ ๐ړۓᕟ URL
唯一刻画 我们依赖的只有服务 附能PHP微服务 跨语言服务化能力提高性能(点对点直连、长链接)统一服务治理能力:流量调度、双发、多发、资源服务化(redis、mc、kafka、hbase、cacheservice等)无感知持续功能更新 .FTI74)551 #BDLVQ3FRVFTU THEEND Motan Agent ThanksQ.A Client
1 +"7"4FSWFS+"7"$MJFOU $ 03 (
P 1)
1 n ฆ௹Ȩѓᕁ̍ฆ௹ᦾ᷌."1* ฆ௹ฤ॰ᅾ䔊ฆ௹ฆ௹˴१n ̨̻ᠧӻ 3FTUGVM"1*+BWB31$ ۠ 微服务·容器化·云化·标准化·工程化 更快的交付更低的成本服务与实现方式不应该有强耦合关系 PHP跨语言服务化所面临的挑战 跨语言服务化核心问题 ʹʝԊʕͭeεԊ)551(31$1#nطଣ㣇̙ݺಘ࢝䕂ٙء䕆ሿᨮѩፅn 挑战一:迁移成本与性能 Server istryReg GRPC Registry SubsNcribe otify Client Motan-PHP-Client 挑战二:服务治理与RPCServer LVS、HA、Nginx PHP-FPM ClusterHA+LBPHP-GRPC GRPCCall 䕏ሿϓ͉طଣঐɢ WorkingNode PHPDeamon NginxTimer GlobalData Discover Server1Server2 …… Registry Registry ❌PHPServerGRPC 经验总结 1)1䕂ʷٙሿᇫ-/03.1ݖᦻʹ˹ࣖଟ䞍ϓ͉n1)1Ԋ͉Ԓٙ҅ࠢঐ੬Ḧঐɢn㣇̙ݺಘٙ࢝䕂طଣڢʕːʷ$ࠠڢMJFOUn 我们需要适合自己的跨语言解决方案 ʹʝsطଣ 跨语言服务化方式对比 Ꮈݎ౮ᖌಷ౮ֵአ౮လቘᚆێಘᚆێ HTTPդቘ֗֗֗Ӿ֗ RPCཛྷࣘṛṛ֗ṛӾ AgentդቘӾӾӾṛṛ 交互(语言中立、多语言) 协议 HeaderPayload MotanHeader MetaDataSizeDataReqBodySizeData 序列化 基础类型复合类型 治理(灵活可扩展) WM-proto 㣇̙ݺಘٙ࢝䕂طଣ 1)1 /snapshot/ (P"HFOU 3FHJTUSZ +"7"4FSWFS+"7"$MJFOU Motan-PHP跨语言调用 if($connection->buildConnection($agent_addr)){$this->_url_obj->setEndpoint(Constants::ENDPOINT_AGENT);$this->_endpoint=newAgent($this->_url_obj); }else{$this->_endpoint=newCluster($this->_url_obj); } Motan-PHPCluster直连策略 publicfunctioncall(){ return$this->_ha_strategy->call($this->_load_balance);} AGENT_RUN_PATH."/snapshot/".$this->_group.'_'.$this->_service_str; Endpointerಘכବ PHP做Server 1)
1 $(*e)551 (P"HFOU 3FHJTUSZ +"7"4FSWFS+"7"$MJFOU Motan-GoProvider与PHP extFactory.RegistExtProvider(CGI,func(url*motan.URL)motan.Provider{ return&CgiProvider{url:url}}) extFactory.RegistExtProvider(HTTP,func(url*motan.URL) motan.Provider{ return&HTTPProvider{url:url} }) MOTAN_* [MOTAN_M_p]=>.weibo.motan.HelloWorldService[MOTAN_SERIALIZATION]=>simple[MOTAN_M_g]=>motan-server-mesh-example[MOTAN_M_m]=>Hello[MOTAN_M_pp]=>motan2 03(
P 1)
1 $(*e)551 (P"HFOU 3FHJTUSZ +"7"4FSWFS+"7"$MJFOU WeiboMesh与泛服务化附能PHP微服务 传统PHP服务化演进 API+COMMON चԭVanillaጱAPIGateway … 2012 2015 2016 …… ཛྷࣘ۸๐ۓ PHP-BE Vasina चԭPHP-BEጱங๐ۓೆړ APIGateway与服务治理 * LVS、HA Respons Vasina 公共逻辑…PageCache LRU/ShDictᴳᕆ̵ᆤෙ SYSConf… SubRequest 内网调用 PHP-FPM News CacheAPI …… PHP-FPM Ads …… PHP-FPM Userinfo …… ServiceMesh是什么 Aservicemeshisadedicatedinfrastructurelayerforhandlingmunication.It’sresponsibleforthereliabledeliveryofrequeststhroughthe ologyofservicespriseamodern,cloudnativeapplication.Inpractice, theservicemeshistypicallyimplementedasanarrayofworkproxiesthatare deployedalongsideapplicationcode,withouttheapplicationneedingtobeaware. https://buoyant.io/2017/04/25/whats-a-service-mesh-and-why-do-i-need-one/ ServiceMesh是什么 dedicatedinfrastructurelayerhandlingservice-to- munication ologyofservices Inpractice workproxies withouttheapplicationneedingtobeaware https://buoyant.io/2017/04/25/whats-a-service-mesh-and-why-do-i-need-one/ "1*(BUFXBZ 4FSWJDF
" 4FSWJDF # 4FSWJDF $ "1*(BUFXBZ NJDSP4FSWJDF " 4FSWJDF # 4FSWJDF $ "1*(BUFXBZ NJDSP4FSWJDF " 4FSWJDF # 4FSWJDF $ 4FSWJDF.FTI "1*(BUFXBZ NJDSP4FSWJDF " 4FSWJDF # 4FSWJDF $4FSWJDF ༆ᇩsɨӐ 4FSWJDF.FTI 4FSWJDF.FTI ᭗מ๐ۓလቘdedicatedinfrastructurelayer 业界ServiceMesh实现 ݷᑍ ࠟܯ istio Google̵IBM̵Lyft conduit Buoyant nginmesh Nginx Linkerd Buoyant serviceComb HUAWEI ᇇ
0.7.10.4.10.7.21.4.01.0.0 चᰂCNCF //CNCFApache ServiceMesh事实规范 %BUB1MBOFjӫء4FSWJDF䞯᧗ӋහỼփ䜲dҁϓ䕂ʘ䞯ٙʹʝ$POUSPM1MBOFjӫء䕂طଣeݴඎ༩͟eಗБഄଫഃ istio DIFDL SFQPSU .JYFS 4USBUFHZ 4FSWJDF " ServiceContainer &OWPZ DataPlane &OWPZ $" .JYFS ControlPlane Y%
4 SPVUFS "1*.PEFM"EBQUPS 1JMPU ,
4 .FTPT 4FSWJDF # ControlPlane WeiboMesh -JHIU$MJFOU 4FSWJDF " ServiceContainer 䁑ഄӻ䕠ݴඎ᧣ܓ 䕃䕃ா˿၍ଣᠧӻІ 䕂ܸ 8FJCP .FTI 8FJCP .FTI 3FHJTUSZ DataPlane -JHIU$MJFOU ControlPlane 4FSWJDF # ControlPlane WeiboMesh泛服务化 4FSWFS(P03+"7"1)1.$3FEJTn .PUBO.$3FEJTn8FJCP.FTI .PUBO 8FJCP.FTI $MJFOU.PUBOn (P03+"7"1)1n 服务的刻画/MotanSchema ๐ܐۓᦓ 版本号 Service grpc://host:port/0.1/helloworld.Greeter?
group=idevz-test ፓຽᜓᅩ ๐ړۓᕟ URL
唯一刻画 我们依赖的只有服务 附能PHP微服务 跨语言服务化能力提高性能(点对点直连、长链接)统一服务治理能力:流量调度、双发、多发、资源服务化(redis、mc、kafka、hbase、cacheservice等)无感知持续功能更新 .FTI74)551 #BDLVQ3FRVFTU THEEND Motan Agent ThanksQ.A Client
声明:
该资讯来自于互联网网友发布,如有侵犯您的权益请联系我们。