.net core+Spring Cloud学习之路 二
前言:
原本计划这次写一下搭建eureka群集。但是发现上次写的只是服务的注册,忘了写服务的发现,所以这次先把服务发现补上去。
- 我们基于上篇文章,再新建两个.net core web api项目,分别起名为order_one,order_two, 作为两个订单服务。我们以order_one为例。
- 同理先使用nuget添加Pivotal.Discovery.ClientCore库。
- Startup.cs 中添加
public void ConfigureServices(IServiceCollection services)
{
// services.AddDiscoveryClient(Configuration);
services.AddDiscoveryClient(Configuration);
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}public void Configure(IApplicationBuilder app, IHostingEnvironment env,ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseHsts();
}
app.UseDiscoveryClient();
app.UseHttpsRedirection();
app.UseMvc();
}需要using Pivotal.Discovery.Client;
- appsettings.json 添加eureka服务配置
{
"Logging": {
"IncludeScopes": false,
"Debug": {
"LogLevel": {
"Default": "Warning"
}
},
"Console": {
"LogLevel": {
"Default": "Warning"
}
}
},
"spring": {
"application": {
"name": "order"
}
},
"eureka": {
"client": {
"serviceUrl": "http://localhost:8888/eureka/",
"shouldFetchRegistry": true
},
"instance": {
"port": ,
"hostName": "localhost"
}
}
} - 修改launchSettings.json 端口改为5001
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:5001/",
"sslPort":
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "api/values",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"Order_One": {
"commandName": "Project",
"launchBrowser": true,
"launchUrl": "api/order",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "http://localhost:5001/"
}
}
} - 添加一个控制器,返回order one
[Route("api")]
public class ValuesController : Controller
{ // GET api/values
[HttpGet("value")]
public string Get()
{
return "Order One";
}
} - 再建一个同样的项目,order_two
- 上述项目创建完成后,我们先启动spring cloud项目。然后同时启动三个.net core项目。这个时候我们刷新一下spring cloud页面。
这个时候发现名为order的有两个服务。
- 修改一下orderserver的控制器代码
[Route("api")]
public class ValuesController : Controller
{ DiscoveryHttpClientHandler _handler; private const string GET_SERVICES_URL = "http://order/api/value";
private ILogger<ValuesController> _logger; public ValuesController(IDiscoveryClient client, ILoggerFactory logFactory = null)
{
_handler = new DiscoveryHttpClientHandler(client);
_logger = logFactory?.CreateLogger<ValuesController>();
} [HttpGet("order")]
public async Task<string> GetServices()
{
_logger?.LogInformation("GetServices");
var client = GetClient();
return await client.GetStringAsync(GET_SERVICES_URL); } private HttpClient GetClient()
{
var client = new HttpClient(_handler, false);
return client;
} }然后再次启动这三个.net core项目,并访问http://localhost:5000/api/order,如图,他成功返回了order two,多刷新几次会发现返回的order One 和 order two是来回变的。


说明eureka服务中心帮我们实现了负载均衡。
- 这个时候,我们可以把order_one 或者 order_two关掉一个。我们再次访问http://localhost:5000/api/order会出现一次错误,然后eureka会自动把有问题的服务踢掉(时间可配置),再次访问不再有问题。
参考资料:
总结
现在网络上类似这样的文章很多,自己再单独写一份就是为了做个笔记,跟各位大牛交流一下,自己也学习学习。
.net core+Spring Cloud学习之路 二的更多相关文章
- .net core+Spring Cloud学习之路 一
文章开头唠叨两句. 2019年了,而自己参加工作也两年有余了,用一个词来概括这两年多的生活,就是:“碌碌无为”. 也不能说一点收获都没有,但是很少.2019来了,我立志要打破现状,改变自己,突破自我. ...
- Spring Cloud进阶之路 | 二:服务提供者(discovery)
1 创建父项目 以前文所述,以spring boot 2.1.7.RELEASE为基,spring cloud版本为Greenwich.SR2,spring cloud alibaba版本为2.1.0 ...
- Spring Cloud 学习笔记(二)——Netflix
4 Spring Cloud Netflix Spring Cloud 通过自动配置和绑定到Spring环境和其他Spring编程模型惯例,为Spring Boot应用程序提供Netflix OSS集 ...
- Spring Boot 学习之路二 配置文件 application.yml
一.创建配置文件 如图所示,我们在resources文件夹中新建配置文件application.yml 结构图 二.一些基本配置 server: port: 8090 //配置端口 session ...
- Spring Cloud学习笔记【二】Eureka 服务提供者/服务消费者(ribbon)
Ribbon 是 Netflix 发布的开源项目,主要功能是为 REST 客户端实现负载均衡.它主要包括六个组件: ServerList,负载均衡使用的服务器列表.这个列表会缓存在负载均衡器中,并定期 ...
- Spring Cloud gateway 网关服务二 断言、过滤器
微服务当前这么火爆的程度,如果不能学会一种微服务框架技术.怎么能升职加薪,增加简历的筹码?spring cloud 和 Dubbo 需要单独学习.说没有时间?没有精力?要学俩个框架?而Spring C ...
- spring cloud 学习(9) - turbine stream无法在eureka注册的解决办法
turbine是啥就不多解释了,初次接触的可以移步spring cloud 学习(4) - hystrix 服务熔断处理 拉到最后看一下,turbine stream默认情况下启动成功后,eureka ...
- Spring框架学习之IOC(二)
Spring框架学习之IOC(二) 接着上一篇的内容,下面开始IOC基于注解装配相关的内容 在 classpath 中扫描组件 <context:component-scan> 特定组件包 ...
- 搭建高可用服务注册中心-Spring Cloud学习第一天(非原创)
文章大纲 一.Spring Cloud基础知识介绍二.创建单一的服务注册中心三.创建一个服务提供者四.搭建高可用服务注册中心五.项目源码与参考资料下载六.参考文章 一.Spring Cloud基础 ...
随机推荐
- python之路-----前端之http协议
一.概述 HTTP(hypertext transport protocol),即超文本传输协议.这个协议详细规定了浏览器和万维网服务器之间互相通信的规则(B/S架构). HTTP就是一个基于TCP的 ...
- Maximum Sum of Digits(CodeForces 1060B)
Description You are given a positive integer nn. Let S(x) be sum of digits in base 10 representation ...
- 记录linux配置
只写成功过程:1.配置sshd: 首先开启安全组端口,选择合适端口(tcp),shell输入vi /etc/services ->ssh修改(21变更为合适端口) 接着shell输入vi /et ...
- Spring MVC 搭建
1.新建一个 Java Web 项目 1-1 File > New >other 1.2 再 点击 Next 之后把 两个都勾选上 如下图 2 点击项目 > 鼠标右键 > ...
- Python学习第四天
一.数字 int 二.字符串 str #以下均为补充内容 #对于空字符串是假 #数字0是假 #数字和字符串可以相互转换 # a="123" # b=int(a) # a=123 # ...
- Android : 高通平台Camera调试之SetpropKey/camxoverridesettings.txt
高通相关网址:Createpoint: https://createpoint.qti.qualcomm.com(可下载文档,Release Note等)Chipcode: https://chipc ...
- 开源代码chat_master分析
- C++中的字符串的输入输出函数、空字符与空格的区别、字符变量赋值和字符串初始化
一.字符串输入输出函数 1. cin.get() 逐个字符输入输出 2. cin 可以将整个字符串一次性输入,但是,cin将空格.Tab和回车键,因此不能用于数组的一次性输入. 注意:ci ...
- ES6常用方法总结
1.声明变量用let,声明常量用const(定义唯一的值),都没有预解释,也不存在变量提升: 2.箭头函数:有如下两种写法 1).表达式(函数体只有一行代码) a).let fn = p => ...
- Linux上的10个Touch命令实例
Linux Touch 命令 Touch命令可以用来修改文件访问或修改的时间戳.实际上,它更常仅仅用于快速的创建一个空白文件. 这篇文章展示了一些非常简单和快速的实例,使用Touch命令来修改时间戳和 ...