真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

go語言微服務(wù)架構(gòu)框架 go搭建微服務(wù)

gomicro設(shè)置并發(fā)量

GoMicro是一個基于Go語言的分布式微服務(wù)框架,我們可以通過在啟動服務(wù)時設(shè)置并發(fā)量來控制并發(fā)量的大小。

成都創(chuàng)新互聯(lián)公司專注于宕昌企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站,商城網(wǎng)站開發(fā)。宕昌網(wǎng)站建設(shè)公司,為宕昌等地區(qū)提供建站服務(wù)。全流程按需求定制網(wǎng)站,專業(yè)設(shè)計,全程項目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)

通過設(shè)置并發(fā)量,可以控制同時請求的數(shù)量,避免出現(xiàn)因請求過多而導(dǎo)致的系統(tǒng)崩潰或阻塞的問題。在GoMicro中,我們可以通過ServerOption來設(shè)置并發(fā)量。

具體的實現(xiàn)步驟是:

1. 新建一個serverOptions并設(shè)置并發(fā)量大小。

2. 通過server的Init和Handle函數(shù),設(shè)置server的選項和路由。

3. 調(diào)用server的Start函數(shù)來啟動服務(wù)。

如此操作,就可以為我們的服務(wù)設(shè)置合適的并發(fā)量大小,提高系統(tǒng)的性能和穩(wěn)定性。

微服務(wù)架構(gòu)之服務(wù)注冊與發(fā)現(xiàn)(一)

一、服務(wù)注冊中心的由來

假如沒有服務(wù)注冊中心,我們會干些什么事情呢?

在傳統(tǒng)行業(yè)的項目架構(gòu)中以下的方案最為常見了:

這種架構(gòu)開發(fā)、部署都是最簡單的,一般適用于中小企業(yè)訪問量并不是太多的情況下,各個系統(tǒng)服務(wù)一臺機器就搞定了。系統(tǒng)之間的調(diào)用也是拿到對方的IP+PORT直接連接。

接下來可能因為應(yīng)用B開始訪問量大了,單臺機器已經(jīng)不能滿足我們的需求,于是一些反向代理工具應(yīng)運而出,其中比較常見的有Apache、Nigix,架構(gòu)演變?yōu)椋?/p>

相比之前的應(yīng)用B的單臺機器訪問,這種nginx代理的方式減輕了服務(wù)器的壓力,但是可能會出現(xiàn)Nginx掛了,那么整個服務(wù)也不可用,于是又來了這么一套架構(gòu):

這樣看方案算是完美了吧。然后事情并不是想象的那么一帆風(fēng)順,這還只是應(yīng)用A調(diào)用一個應(yīng)用B,如果應(yīng)用A調(diào)用的可能是應(yīng)用B、C、D、E...,這種完全就不知道他后面到底還想干嘛,這種架構(gòu)看似可以,但是絕對會累死運維的(nginx的配置將會非?;靵y,直接導(dǎo)致運維不干了)。

服務(wù)注冊中心干些什么事情呢?

上面提到的那種靠人力(主要是運維干的事情)比較繁瑣,還不好維護,有這么幾點不方便:應(yīng)用服務(wù)的地址變了、雙十一搞活動服務(wù)器新增等等。那么我們可以有這么的一種架構(gòu):

服務(wù)注冊中心主要是維護各個應(yīng)用服務(wù)的ip+port列表,并保持與各應(yīng)用服務(wù)的通訊,在一定時間間隔內(nèi)進行心跳檢測,如果心跳不能到達(dá)則對服務(wù)IP列表進行剔除,并同時通知給其它應(yīng)用服務(wù)進行更新。同樣要是有新增的服務(wù)進來,應(yīng)用服務(wù)會向注冊中心進行注冊,服務(wù)注冊中心將通知給其它應(yīng)用進行更新。每個應(yīng)用都有需要調(diào)用對應(yīng)應(yīng)用服務(wù)的地址列表,這樣在進行調(diào)用時只要處理客戶負(fù)載雜均衡即可。

二、微服務(wù)注冊中心

1.Zookeeper

ZooKeeper是一個分布式的,開放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù),是Google的Chubby一個開源的實現(xiàn),是Hadoop和Hbase的重要組件。它是一個為分布式應(yīng)用提供一致性服務(wù)的軟件,提供的功能包括:配置維護、域名服務(wù)、分布式同步、組服務(wù)等。

上面的話直接摘抄百度百科的內(nèi)容,國內(nèi)很多公司做分布式開發(fā)最初的選型大部分都是采用dubbo框架。dubbo框架注冊中心主要使用zookeeper。zookeeper服務(wù)端與客戶端的底層通訊為netty。zookeeper采用CAP理論中的CP,一般集群部署最少需要3臺機器。

2.Euraka

先來看一下euraka的架構(gòu)圖:

Register:服務(wù)注冊

當(dāng)Eureka客戶端向Eureka Server注冊時,它提供自身的元數(shù)據(jù),比如IP地址、端口,運行狀況指示符URL,主頁等。

Renew:服務(wù)續(xù)約

Eureka客戶會每隔30秒發(fā)送一次心跳來續(xù)約。 通過續(xù)約來告知Eureka Server該Eureka客戶仍然存在,沒有出現(xiàn)問題。 正常情況下,如果Eureka Server在90秒沒有收到Eureka客戶的續(xù)約,它會將實例從其注冊表中刪除。 建議不要更改續(xù)約間隔。

Fetch Registries:獲取注冊列表信息

Eureka客戶端從服務(wù)器獲取注冊表信息,并將其緩存在本地??蛻舳藭褂迷撔畔⒉檎移渌?wù),從而進行遠(yuǎn)程調(diào)用。該注冊列表信息定期(每30秒鐘)更新一次。每次返回注冊列表信息可能與Eureka客戶端的緩存信息不同, Eureka客戶端自動處理。如果由于某種原因?qū)е伦粤斜硇畔⒉荒芗皶r匹配,Eureka客戶端則會重新獲取整個注冊表信息。 Eureka服務(wù)器緩存注冊列表信息,整個注冊表以及每個應(yīng)用程序的信息進行了壓縮,壓縮內(nèi)容和沒有壓縮的內(nèi)容完全相同。Eureka客戶端和Eureka 服務(wù)器可以使用JSON / XML格式進行通訊。在默認(rèn)的情況下Eureka客戶端使用壓縮JSON格式來獲取注冊列表的信息。

Cancel:服務(wù)下線

Eureka客戶端在程序關(guān)閉時向Eureka服務(wù)器發(fā)送取消請求。 發(fā)送請求后,該客戶端實例信息將從服務(wù)器的實例注冊表中刪除。該下線請求不會自動完成,它需要調(diào)用以下內(nèi)容:

DiscoveryManager.getInstance().shutdownComponent();

Eviction 服務(wù)剔除

在默認(rèn)的情況下,當(dāng)Eureka客戶端連續(xù)90秒沒有向Eureka服務(wù)器發(fā)送服務(wù)續(xù)約,即心跳,Eureka服務(wù)器會將該服務(wù)實例從服務(wù)注冊列表刪除,即服務(wù)剔除。

自我保護機制:

既然Eureka Server會定時剔除超時沒有續(xù)約的服務(wù),那就有可能出現(xiàn)一種場景,網(wǎng)絡(luò)一段時間內(nèi)發(fā)生了 異常,所有的服務(wù)都沒能夠進行續(xù)約,Eureka Server就把所有的服務(wù)都剔除了,這樣顯然不太合理。所以,就有了 自我保護機制,當(dāng)短時間內(nèi),統(tǒng)計續(xù)約失敗的比例,如果達(dá)到一定閾值,則會觸發(fā)自我保護的機制,在該機制下, Eureka Server不會剔除任何的微服務(wù),等到正常后,再退出自我保護機制。自我保護開關(guān)(eureka.server.enableself-preservation: false)

3.Consul

consul推薦的架構(gòu)圖:

Consul不像Euraka的部署那么簡單,他是go語言開發(fā)的,需要運維單獨部署,有提供java的客戶端連接,采用的是CAP的CP。

4.Nacos

Euraka是Spring Cloud Netflix早期版本中推薦使用的,后來euraka1.0版本不再維護,euraka2.0已經(jīng)閉源,導(dǎo)致很多新項目基于Spring Cloud Netflix 開發(fā)的選型變遷為Consul.

Nacos是阿里開源的服務(wù)注冊中心,它可以與spring cloud aliaba集成使用。

Nacos的官方介紹:

Nacos 致力于幫助您發(fā)現(xiàn)、配置和管理微服務(wù)。Nacos 提供了一組簡單易用的特性集,幫助您實現(xiàn)動態(tài)服務(wù)發(fā)現(xiàn)、服務(wù)配置管理、服務(wù)及流量管理。

Nacos 幫助您更敏捷和容易地構(gòu)建、交付和管理微服務(wù)平臺。 Nacos 是構(gòu)建以“服務(wù)”為中心的現(xiàn)代應(yīng)用架構(gòu)(例如微服務(wù)范式、云原生范式)的服務(wù)基礎(chǔ)設(shè)施。

Nacos 地圖

Nacos 生態(tài)圖

如 Nacos 全景圖所示,Nacos 無縫支持一些主流的開源生態(tài),例如

Spring Cloud

Apache Dubbo and Dubbo Mesh TODO

Kubernetes and CNCF TODO

三、服務(wù)注冊與發(fā)現(xiàn)技術(shù)選型

以下是來自網(wǎng)上的一個分享:

除了上述的幾種以外,筆者更推薦使用Nacos作為服務(wù)注冊中心。

推薦理由:

Nacos服務(wù)注冊表結(jié)構(gòu)Mapnamespace, Mapgroup::serviceName, Service采用多層次Map結(jié)構(gòu),控制的顆粒度更細(xì),支持金絲雀模式發(fā)布,心跳同步機制也更快速,服務(wù)更新更及時。

Go微服務(wù)--常見的微服務(wù)框架

近幾年誕生了很多微服務(wù)框架,比如JAVA的Spring Cloud、Dubbo;Golang的GoKit和GoMicro以及NodeJs的Seneca。幾乎每種主流語言都有其對應(yīng)的微服務(wù)框架。

Go在微服務(wù)框架中有其獨特的優(yōu)勢,至于優(yōu)勢在哪,自行g(shù)oogle。

1、GoKit框架

這是一個工具包的集合,可以幫助攻城獅構(gòu)建強大、可靠和可維護的微服務(wù)。提供了用于實現(xiàn)系統(tǒng)監(jiān)控和彈性模式組件的庫,例如日志、跟蹤、限流、熔斷等。

基于這個框架的應(yīng)用程序架構(gòu)由三個主要的部分組成:

傳輸層:用于網(wǎng)絡(luò)通信,服務(wù)通常使用HTTP或者gRPC等網(wǎng)絡(luò)傳輸協(xié)議,或者使用NATS等發(fā)布訂閱系統(tǒng)相互通信。

接口層:是服務(wù)器和客戶端的基本構(gòu)建塊。每個對外提供的接口方法都會定義為一個Endpoint,一遍在服務(wù)器和客戶端之間進行網(wǎng)絡(luò)通信,每個端點使用傳輸層通過HTTP或gRPC等具體通信模式對外提供服務(wù)

服務(wù)成:具體的業(yè)務(wù)邏輯實現(xiàn)

2、GoMicro框架

這是一個基于Go語言實現(xiàn)的插件化RPC微服務(wù)框架。提供了服務(wù)發(fā)現(xiàn)、負(fù)載均衡、同步傳輸、異步通信以及事件驅(qū)動等機制,嘗試簡化分布式系統(tǒng)之間的通信,讓開發(fā)者更專注于自身業(yè)務(wù)邏輯的開發(fā)。

GoMicro的設(shè)計哲學(xué)是可插拔的架構(gòu)理念,提供了可快速構(gòu)建系統(tǒng)的組件,并且可以根據(jù)自身的需求對GoMicro提供的默認(rèn)實現(xiàn)進行定制。所有插件都可在倉庫github點抗 /micro/go-plugins 中找到。

Go語言做Web應(yīng)用開發(fā)的框架,哪一個更適合入門

Revel Web開源框架

個高效的Go語言Web開發(fā)框架,?其思路完全來自 Java 的?Play Framework。

特點

熱編譯,簡單可選,同步(每個請求都創(chuàng)建自己的goroutine來處理。

Go語言Web框架:beego

一個用Go開發(fā)的應(yīng)用框架,思路來自于tornado,路由設(shè)計來源于sinatra。

支持特性

MVC;

REST;

智能路由;

日志調(diào)試;

配置管理;

模板自動渲染;

layout設(shè)計;

中間件插入邏輯;

方便的JSON/XML服務(wù);


分享題目:go語言微服務(wù)架構(gòu)框架 go搭建微服務(wù)
網(wǎng)站路徑:http://weahome.cn/article/ddigodi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部