1.服務發現的由來
服務發現及註冊中心或是命名服務(後文統一稱爲服務發現),不是憑空出現的,其演進與軟件開發的架構方式的演進有密切關聯,大致如下:
1.1 單體架構時代
早期的互聯網開發,多使用單體架構,服務自成一體,對於依賴的少數外部服務,會採用配置域名的方式訪問,比如要使用外部短信供應商的短信發送接口,會使用appId和appKey,調用該供應商的域名接口即可。
1.2 SOA架構時代
以基於Http形式暴露服務爲例,假設A服務部署在3臺虛擬機上,這三個服務實例均有各自的獨立內網ip,此時假設B服務要調用A服務的接口服務,有幾種方式。
- A服務3個服務實例的內網ip給到消費者B服務,這個時候B服務在沒有Client端負載均衡技術的條件下,通常會在B服務自己的Nginx上配置A服務的upstream,即將A服務的3個實例配置進去,比如:
upstream service_api_servers{ server 192.168.137.131 weight = 3 max_fails=3 fail_timeout=20s; server 192.168.137.132 weight = 1 max_fails=3 fail_timeout=20s; server 192.168.137.133 weight = 4 max_fails=3 fail_timeout=20s; } ## .... server{ listen 80 default_server; server_name serviceb.com.cn; location /api/services/{ proxy_pass http://servicea_api_servers/api; } }