日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

spring cloud+dotnet core搭建微服务架构:Api网关(三)

發(fā)布時(shí)間:2023/12/4 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spring cloud+dotnet core搭建微服务架构:Api网关(三) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

國(guó)慶假期,一直沒有時(shí)間更新。
根據(jù)群里面的同學(xué)的提問,強(qiáng)烈推薦大家先熟悉下spring cloud。文章下面有純潔大神的spring cloud系列。
上一章最后說了,因?yàn)榉?wù)是不對(duì)外暴露的,所以在外網(wǎng)要訪問服務(wù)必須通過API網(wǎng)關(guān)來完成,而spring cloud 提供了現(xiàn)成的Api網(wǎng)關(guān)組件zuul。它包含了路由,授權(quán),壓力測(cè)試等一系列功能。如下圖所示,Api網(wǎng)關(guān)在整個(gè)應(yīng)用環(huán)境的位置。

業(yè)務(wù)場(chǎng)景

我們先模擬一個(gè)業(yè)務(wù)場(chǎng)景,客戶端(web,ios,android...)通過Api網(wǎng)關(guān)訪問訂單服務(wù),訂單服務(wù)有兩個(gè)節(jié)點(diǎn),為了模擬集群效果,這兩個(gè)節(jié)點(diǎn)分別返回不同的數(shù)據(jù)。那么我們一共需要?jiǎng)?chuàng)建4個(gè)應(yīng)用程序。服務(wù)中心(Java)、Api網(wǎng)關(guān)(Java)、訂單服務(wù)1(.NET Core)、訂單服務(wù)2(.NET Core)。

代碼部分

服務(wù)中心

使用intellij idea創(chuàng)建一個(gè)spring boot項(xiàng)目,創(chuàng)建服務(wù)中心。設(shè)置端口為5000。
pom.xml

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka-server</artifactId></dependency>

ServiceCenterApplication.java

@EnableEurekaServer@SpringBootApplicationpublic class ServiceCenterApplication {public static void main(String[] args) {SpringApplication.run(ServiceCenterApplication.class, args);} }

application.properties

spring.application.name=service-center server.port=5000

Api網(wǎng)關(guān)

使用intellij idea創(chuàng)建一個(gè)spring boot項(xiàng)目,創(chuàng)建Api網(wǎng)關(guān)服務(wù)。設(shè)置端口為5555。
pom.xml

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-zuul</artifactId></dependency>

ServiceGatewayApplication.java

@SpringBootApplication@EnableZuulProxypublic class ServiceGatewayApplication {public static void main(String[] args) {SpringApplication.run(ServiceGatewayApplication.class, args);} }

application.properties

spring.application.name=service-gateway server.port=5555eureka.client.serviceUrl.defaultZone=http://localhost:5000/eureka/#下面的代碼可以注釋zuul.routes.order.path=/order/** zuul.routes.order.serviceId=order

上面配置是不是和nginx很像。zuul還提供了默認(rèn)規(guī)則,http://ZUUL_HOST:ZUUL_PORT/serviceId/**,滿足這一規(guī)則的會(huì)自動(dòng)代理,如上面的配置完全可以不用寫,這樣大量的服務(wù)就不用一個(gè)一個(gè)配置了。

訂單服務(wù)1

使用vs2017創(chuàng)建 .NET Core Web Api應(yīng)用程序

appsettings.json
{"Logging": {"IncludeScopes": false,"LogLevel": {"Default": "Warning"}},"spring": {"application": {"name": "order"}},"eureka": {"client": {"serviceUrl": "http://localhost:5000/eureka/"},"instance": {"port": 8010}} }
ValuesController.cs
[Route("/")]
public class ValuesController : Controller{[HttpGet] ? ?public string Get() ? ?{ ? ?
? ?return "order1";} }

訂單服務(wù)2

同訂單服務(wù)1的創(chuàng)建過程,修改端口為8011和返回結(jié)果。

appsettings.json
{"Logging": {"IncludeScopes": false,"LogLevel": {"Default": "Warning"}},"spring": {"application": {"name": "order"}},"eureka": {"client": {"serviceUrl": "http://localhost:5000/eureka/"},"instance": {"port": 8011}} }
ValuesController.cs
[Route("/")]public class ValuesController : Controller{[HttpGet] ? ?public string Get() ? ?{ ? ? ? ?return "order2";} }

篇幅有限,以上代碼均有精簡(jiǎn),完整代碼請(qǐng)去Github上獲取。

我們現(xiàn)在一共有4個(gè)應(yīng)用程序:

  • eureka服務(wù)中心,端口5000,應(yīng)用名稱service-center

  • zuul網(wǎng)關(guān)服務(wù),端口5555,應(yīng)用名稱service-gateway

  • 訂單服務(wù)1,端口8010,應(yīng)用名稱order

  • 訂單服務(wù)2,端口8011,應(yīng)用名稱order

  • 其中訂單服務(wù)1和訂單服務(wù)2組成了訂單服務(wù)集群

    分別啟動(dòng)這4個(gè)應(yīng)用程序。打開eureka服務(wù):http://localhost:5000/,
    如下圖所示都注冊(cè)成功。

    打開http://localhost:5555/order,返回"order1"

    刷新后返回"order2",反復(fù)多次刷新,"order1"和"order2"依次返回。

    后記

    通過上面的例子說明Api網(wǎng)關(guān)服務(wù)已經(jīng)生效,并且實(shí)現(xiàn)了負(fù)載均衡。結(jié)合具體的業(yè)務(wù)場(chǎng)景,我們的生產(chǎn)環(huán)境只對(duì)外暴露5555端口,客戶端訪問Api網(wǎng)關(guān),由Api網(wǎng)關(guān)去路由到各個(gè)服務(wù)節(jié)點(diǎn),這樣所有的客戶端調(diào)用都統(tǒng)一了入口。

    示例代碼

    所有代碼均上傳github。
    求推薦,你們的支持是我寫作最大的動(dòng)力,我的QQ群:328438252,交流微服務(wù)。

    相關(guān)文章:?

    • 手把手教你使用spring cloud+dotnet core搭建微服務(wù)架構(gòu):服務(wù)治理(-)

    • spring cloud+dotnet core搭建微服務(wù)架構(gòu):服務(wù)發(fā)現(xiàn)(二)

    • 微服務(wù)~Eureka實(shí)現(xiàn)的服務(wù)注冊(cè)與發(fā)現(xiàn)及服務(wù)之間的調(diào)用

    原文地址:http://www.cnblogs.com/longxianghui/p/7646870.html


    .NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺(tái)或掃描二維碼關(guān)注

    總結(jié)

    以上是生活随笔為你收集整理的spring cloud+dotnet core搭建微服务架构:Api网关(三)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。