服务发现与服务注册
一個用戶微服務和電影微服務,電影微服務通過RestTemplate,調用用戶微服務里面的接口,那我們知道調用是有一定問題的,在現(xiàn)在的部署環(huán)境里面,服務的IP和端口號是變化的,網(wǎng)絡地址是變化的,假設用戶微服務重新部署,他的IP和端口發(fā)生了變化,電影微服務要進行修改,這種維護起來是很麻煩的,如果電影微服務同時還是其他服務的消費者,他也得改,大家都要改,一個是比較難維護,假設用戶微服務有4個節(jié)點,怎么去進行負載,如果是用nginx,或者其他的反向代理軟件的話,其實并不能完全的滿足滿足我們的需求,假設這邊架一個Nginx,如果服務多,幾百個服務,其實是比較困難的,怎么樣去解決這樣的問題,所以要有一個服務發(fā)現(xiàn)的一個概念,服務發(fā)現(xiàn)是什么呢,就是服務提供者,服務消費者在啟動的時候,都會把自己的網(wǎng)絡地址,注冊到服務發(fā)現(xiàn)組件里面去,服務消費者他要去調用的時候呢,他要從這里面去查詢,服務提供的IP和端口,然后進行調用,我們知道任何服務都是有可能會宕掉的,如果服務提供者他宕掉了,我們得 從服務發(fā)現(xiàn)組件里面,給剔除掉,所以當這些服務注冊到這之后,隔一次時間就發(fā)送一個心跳,有一個心跳機制,如果有幾次沒有收到心跳,就把這個給剔除掉,這是一種比較典型的服務發(fā)現(xiàn)的機制,比如說像Buffer,Eureka都是采用類似的機制
他其實就是一個數(shù)據(jù)庫,服務消費者和提供者的IP和端口,也就是所謂的網(wǎng)絡地址,網(wǎng)絡信息,這個是服務發(fā)現(xiàn)組件的一個核心,你光存數(shù)據(jù)有沒有用,當注冊的時候你得新增,當沒有發(fā)心跳的時候我得把它剔除掉,肯定要有API去操作服務注冊表,我們把服務添加到注冊表稱之為注冊,我們把從注冊表里移除,我們稱之為服務注銷
第三個是健康檢查,所謂的心跳機制,其實也是健康檢查的機制,不一定是心跳啦,其他的機制也可以,沒有達到某種閾值,就可以把它剔除掉,可以注銷這個服務,服務消費者可以正常的調用服務提供者
服務發(fā)現(xiàn)的方式,服務發(fā)現(xiàn)的方式有兩種,第一種是客戶端發(fā)現(xiàn),第二種是服務端發(fā)現(xiàn),有很多的產(chǎn)品,比如說Eureka,比如說ZK,其實就是客戶端發(fā)現(xiàn)的,還有一種是服務端發(fā)現(xiàn)的,nginx,SpringCloud提供了服務發(fā)現(xiàn)的多種支持,有Eureka,ZK,Consul,客戶端發(fā)現(xiàn)和服務端發(fā)現(xiàn),其實區(qū)別并不是那么大
http://blog.daocloud.io/microservices-4/中文的一個翻譯版,上面有詳細的介紹,客戶端發(fā)現(xiàn)方式,和服務端發(fā)現(xiàn)方式,寫的非常的通俗易懂,我們是使用Eureka進行實戰(zhàn),SpringCloud對Eureka進行的比較完整,ZK是支持最差的,不是服務發(fā)現(xiàn)和服務注冊的能力不完整,而是他和其他組建的配合,完不完整,指的是這個意思,我們說一下術語的解釋,服務注冊,服務發(fā)現(xiàn),還有注冊中心,我們可以統(tǒng)籌的稱之為服務發(fā)現(xiàn)的一個組件,一般來講是可以行得通的,這是為了防止大家看書籍看的比較的蒙
?
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
- 上一篇: MYBATIS 批量update 报错的
- 下一篇: Eureka简介与Eureka Serv