微服務的核心組件由以下方面組成:
服務通信:對于服務通信,微服務架構明確要求服務之間通過跨進程的遠程調用方式進行通信。關于遠程調用,有三種風格的解決方案,即RPC、REST和自定義實現。在服務與服務的交互方式上,也存在兩個維度,即按照交互對象的數量分為一對一和一對多,以及按照應答返回的方式分為同步和異步。目前RPC框架可供選型的余地很大,如Alibaba Dubbo、Facebook Thrift以及Google g RPC等都是非常主流的實現,而REST的實現則包括Jersey和Spring MVC等。
事件驅動:事件驅動模式的表現形式通常是各種消息中間件,如實現JMS(Java Message Service, Java消息服務)規范的Active MQ、實現AMQP(Advanced Message Queuing Protocol,高級消息隊列協議)規范的 Rabbit MQ,還有在大數據流式計算領域中應用非常廣泛的Kafka,當然還有像Alibaba自研的Rocket MQ。在這些消息中間件中,Active MQ一般不考慮,如果是相對比較輕量級的應用可以選擇Rabbit MQ,而Kafka則適合大型應用的場景。
負載均衡:負載均衡分為服務器端負載均衡和客戶端負載均衡兩大類實現方案。從服務器軟件上,我們可以選擇Nginx、HA Proxy、Apache、LVS等工具。而Netflix Ribbon則是一種單獨可以使用的客戶端負載均衡機制。事實上所有的分布式服務框架基本都內置了負載均衡的實現,所以負載均衡本身并不需要做太多的選擇。
API網關:API網關是微服務架構的核心組件之一。Spring旗下有一個Spring Cloud Netflix Zuul提供了一套過濾器機制,可以很好地支持簽名校驗、登錄校驗等前置過濾功能處理,同時它也維護了路由規則和服務實例,以便完成服務路由功能。其他可供參考的 API 網關還有Mashape和開源的Kong等。
配置管理:配置管理的作用是完成集中式的配置信息管理。目前比較主流的包括 Spring 旗下的Spring Cloud Config、淘寶的 Diamond 和百度的 Disconf 等。在實現上,Spring Cloud Config支持配置信息放在配置服務的內存中(即本地),也支持放在遠程Git倉庫,這點與其他工具在設計上有較大不同。Diamond和Disconf都是基于Mysql作為存儲媒介,Diamond采用拉模型,即每隔 15s拉一次全量數據;而Disconf 基于 Zookeeper 的推模型,實時推送。在配置數據模型上,Diamond 只支持 Key-Value 結構的數據,非配置文件模式;Disconf支持傳統的配置文件模式,也支持Key-Value結構數據。
回答所涉及的環境:聯想天逸510S、Windows 10。
微服務的核心組件由以下方面組成:
服務通信:對于服務通信,微服務架構明確要求服務之間通過跨進程的遠程調用方式進行通信。關于遠程調用,有三種風格的解決方案,即RPC、REST和自定義實現。在服務與服務的交互方式上,也存在兩個維度,即按照交互對象的數量分為一對一和一對多,以及按照應答返回的方式分為同步和異步。目前RPC框架可供選型的余地很大,如Alibaba Dubbo、Facebook Thrift以及Google g RPC等都是非常主流的實現,而REST的實現則包括Jersey和Spring MVC等。
事件驅動:事件驅動模式的表現形式通常是各種消息中間件,如實現JMS(Java Message Service, Java消息服務)規范的Active MQ、實現AMQP(Advanced Message Queuing Protocol,高級消息隊列協議)規范的 Rabbit MQ,還有在大數據流式計算領域中應用非常廣泛的Kafka,當然還有像Alibaba自研的Rocket MQ。在這些消息中間件中,Active MQ一般不考慮,如果是相對比較輕量級的應用可以選擇Rabbit MQ,而Kafka則適合大型應用的場景。
負載均衡:負載均衡分為服務器端負載均衡和客戶端負載均衡兩大類實現方案。從服務器軟件上,我們可以選擇Nginx、HA Proxy、Apache、LVS等工具。而Netflix Ribbon則是一種單獨可以使用的客戶端負載均衡機制。事實上所有的分布式服務框架基本都內置了負載均衡的實現,所以負載均衡本身并不需要做太多的選擇。
API網關:API網關是微服務架構的核心組件之一。Spring旗下有一個Spring Cloud Netflix Zuul提供了一套過濾器機制,可以很好地支持簽名校驗、登錄校驗等前置過濾功能處理,同時它也維護了路由規則和服務實例,以便完成服務路由功能。其他可供參考的 API 網關還有Mashape和開源的Kong等。
配置管理:配置管理的作用是完成集中式的配置信息管理。目前比較主流的包括 Spring 旗下的Spring Cloud Config、淘寶的 Diamond 和百度的 Disconf 等。在實現上,Spring Cloud Config支持配置信息放在配置服務的內存中(即本地),也支持放在遠程Git倉庫,這點與其他工具在設計上有較大不同。Diamond和Disconf都是基于Mysql作為存儲媒介,Diamond采用拉模型,即每隔 15s拉一次全量數據;而Disconf 基于 Zookeeper 的推模型,實時推送。在配置數據模型上,Diamond 只支持 Key-Value 結構的數據,非配置文件模式;Disconf支持傳統的配置文件模式,也支持Key-Value結構數據。
回答所涉及的環境:聯想天逸510S、Windows 10。