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

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

go語言微服務核心架構(gòu) go語言微服務開發(fā)

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

一、服務注冊中心的由來

站在用戶的角度思考問題,與客戶深入溝通,找到坡頭網(wǎng)站設(shè)計與坡頭網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站制作、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、主機域名、虛擬空間、企業(yè)郵箱。業(yè)務覆蓋坡頭地區(qū)。

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

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

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

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

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

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

服務注冊中心干些什么事情呢?

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

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

二、微服務注冊中心

1.Zookeeper

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

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

2.Euraka

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

Register:服務注冊

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

Renew:服務續(xù)約

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

Fetch Registries:獲取注冊列表信息

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

Cancel:服務下線

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

DiscoveryManager.getInstance().shutdownComponent();

Eviction 服務剔除

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

自我保護機制:

既然Eureka Server會定時剔除超時沒有續(xù)約的服務,那就有可能出現(xiàn)一種場景,網(wǎng)絡一段時間內(nèi)發(fā)生了 異常,所有的服務都沒能夠進行續(xù)約,Eureka Server就把所有的服務都剔除了,這樣顯然不太合理。所以,就有了 自我保護機制,當短時間內(nèi),統(tǒng)計續(xù)約失敗的比例,如果達到一定閾值,則會觸發(fā)自我保護的機制,在該機制下, Eureka Server不會剔除任何的微服務,等到正常后,再退出自我保護機制。自我保護開關(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)閉源,導致很多新項目基于Spring Cloud Netflix 開發(fā)的選型變遷為Consul.

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

Nacos的官方介紹:

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

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

Nacos 地圖

Nacos 生態(tài)圖

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

Spring Cloud

Apache Dubbo and Dubbo Mesh TODO

Kubernetes and CNCF TODO

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

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

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

推薦理由:

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

微服務框架全家福都有哪些

度娘給出的一個完整答案,總結(jié)的很全面

Java系微服務框架

· Spring Boot/ Netflix OSS/Spring Cloud

· Dubbo

· Dropwizard

· Akka

· Vert.x/ Lagom/ ReactiveX/Spring 5

· 除了以上介紹的這些主流微服務框架外,還有Grizzly、KumuluzEE、ConductR、Ninja、Jodd、Restlet、RESTEasy、Payara Micro、Redkale、RestExpress、restx、JessMA、eventuate、Rapidoid、Ratpack、Javalite、JHipster及Bootique.io等

.Net系微服務框架

· Service Fabric

· Surging

· Steeltoe OSS

· Microdot Framework

· .NET China Foundation

· 除以上框架,還有Xigadee、Apworks framework、Cronus、NancyFx、GRPC等相關(guān)框架和項目

Node.js微服務框架

· Seneca

· Hapi/ restify/ LoopBack

Go微服務框架

· Go-Kit

· Goa

· Dubbogo

· 除了上面3種基于Go語言的微服務框架,還有Micro、Gizmo等

Python微服務框架

· Nameko, Python的微服務框架非常少,暫時就列出一個框架

golang 微服務開發(fā)(一)

本項目旨在使用golang 搭建一個微服務應用。

gin做api和rpc的客戶端 go-micro作為后臺微服務

···

// gin

Frame

- app // 控制器

- conf // 配置文件

- middleward // 中間件

- models // 模型

- routes // 路由

- services // 服務層

- uitl // 工具

- main.go // 入口

// app 目錄

app

- api

- v1

- goods.go

- v2

- route.go

- app.go

//conf目錄

conf

- config.ini

models

- models.go

services

- xxxService.go

util

- config.go

···

Go語言怎么樣?

根據(jù)Go趨勢報告顯示,全球范圍內(nèi)有 110 萬專業(yè)開發(fā)者選擇Go作為其主要開發(fā)語言。如果把以其他編程語言作為主要開發(fā)語言,同時也在使用Go的開發(fā)者計算在內(nèi),這一數(shù)字將高達270萬,中國的Go語言開發(fā)者排名第一,全球占比超過16%。

Go 語言能夠支持并構(gòu)建與微服務結(jié)合的內(nèi)部工具、架構(gòu)和后端服務而深受IT企業(yè)歡迎,許多IT架構(gòu)工具由Go構(gòu)建而成,例如大型的Kubernetes、Docker和Vault等。數(shù)據(jù)顯示,有63%的具有統(tǒng)治力的云原生項目都是用Go構(gòu)建。

因此,博睿數(shù)據(jù)在國內(nèi)首發(fā)支持Go語言智能探針,對于提升業(yè)務性能,助力企業(yè)數(shù)字化轉(zhuǎn)型有著非常重要的意義。

SmartAgent探針技術(shù)集結(jié)主流編程語言

SmartAgent是博睿數(shù)據(jù)自研的自動化部署的一體化探針,在已支持JAVA,PHP,.net,Nodejs,.NET Core,Python的基礎(chǔ)上,新增了對Go語言的支持。

相較而言,傳統(tǒng)探針技術(shù)需要客戶配合修改應用程序代碼,風險不可控,需要客戶重新編譯程序集成探針,耦合度高。

不同于行業(yè)內(nèi)傳統(tǒng)探針技術(shù),博睿數(shù)據(jù)GoAgent探針直接后臺安裝即可,主動注入和嵌碼,降低與客戶程序耦合、無需二次修改代碼、提高 GoAgent 技術(shù)易用性。無論是動態(tài)編譯還是靜態(tài)編譯的代碼,博睿數(shù)據(jù)Samrt Agent技術(shù)都可以在不進行任何修改的情況下進行服務級別和代碼級別的分布式鏈路跟蹤,實現(xiàn)業(yè)務的可觀測性。

GoAgent探針支持六大功能,實現(xiàn)全鏈路追蹤


文章題目:go語言微服務核心架構(gòu) go語言微服務開發(fā)
網(wǎng)站地址:http://weahome.cn/article/dojgohe.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部