微服务~Eureka实现的服务注册与发现及服务之间的调用
微服务里一个重要的概念就是服务注册与发现技术,当你有一个新的服务运行后,我们的服务中心可以感知你,然后把加添加到服务列表里,然后当你死掉后,会从服务中心把你移除,而你作为一个服务,对其它服务公开的只是服务名称,而不是最终的服务地址URL,这对于云平台,容器化架构来说是非常重要的!
- 安装单独的Eureka服务(server)
- 服务注册-aspnetcore建立Eureka客户端(client)
- 服务发现-实现服务与服务的调用
一 安装单独的Eureka服务
- 安装tomcat,到apache官网http://tomcat.apache.org下载tomcat
- 下载Eureka,可以到http://mvnrepository.com/artifact/com.netflix.eureka/eureka-server选择一下版本下载
- 配置端口,默认是8080,tomcat\webapps\eureka\WEB-INF\classes\eureka-client.properties
- 重启tomcat服务即可
二 aspnetcore建立Eureka客户端(client)
- nuget添加包包Pivotal.Discovery.Client
- 在startup.cs里添加客户端的自动发现代码(相对于eureka是客户端,事实上它是微服务里的一种服务)
- program里添加对某个端口的监听
- 将EurekaServer的地址添加到appsettings里
- 启动项目,然后去服务中心查看自己的新服务
在startup.cs里
public void ConfigureServices(IServiceCollection services)
{
services.AddDiscoveryClient(Configuration);
services.AddMvc();
} // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{ if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
} app.UseMvc();
app.UseDiscoveryClient();
}
program里添加对某个端口的监听
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseUrls("http://*:8010")
.Build();
将EurekaServer的地址添加到appsettings里,其中8010是自己监听的端口,Order是自己的名称
"spring": {
"application": {
"name": "Order"
}
},
"eureka": {
"client": {
"serviceUrl": "http://localhost:8080/eureka/V2/",
"shouldFetchRegistry": false,
"shouldRegisterWithEureka": true
},
"instance": {
"port":
}
然后启动项目,在你的服务中心就可以看到新加的服务了(http://localhost:8080/eureka/),这就是服务的注册!

三 服务发现-实现服务与服务的调用
我们在某个微服务的项目里,可以调用其它的服务,这类似于一种请求链的过程,以后我们讲spring cloud里会说其它相关的技术
[HttpGet]
public IEnumerable<string> Get()
{
DiscoveryClient _discoveryClient = new DiscoveryClient(new EurekaClientConfig
{
EurekaServerServiceUrls = "http://localhost:8080/eureka/V2/",
ProxyHost = "http://localhost:8080/eureka/V2/",
ProxyPort = , });
//得到服务中心所有服务和它的Url地址
foreach (var item in _discoveryClient.Applications.GetRegisteredApplications())
yield return $"{item.Name}={item.Instances.FirstOrDefault().HomePageUrl}";
}
页面显示的结果中我们看到了所有的服务,它的名称和它的URL,这种URL在容器化部署里是动态的,所以我们不能像原来那样,把它写死了,这也就是服务发现产生的原因!

好了,今天对于服务注册与服务发现就说到这里,都是比较实干的东西!
感谢各位阅读!
微服务~Eureka实现的服务注册与发现及服务之间的调用的更多相关文章
- Spring Cloud-服务的注册与发现之服务注册中心(Eureka Server)
Spring cloud是为了什么产生的? 根据官网的这个介绍来看,我们可以知道,Spring cloud是为开发者提供的一个工具,而使用这个工具的产生就是为了帮助开发者快速的开发一套比较通用的分布式 ...
- nacos服务注册与发现及服务配置实现
Nacos 提供了一组简单易用的特性集,可快速实现动态服务发现.服务配置.服务元数据及流量管理. 更敏捷和容易地构建.交付和管理微服务平台. 关键特性: 服务发现和服务健康监测 动态配置服务 动态 D ...
- 微服务通信之feign的注册、发现过程
前言 feign 是目前微服务间通信的主流方式,是springCloud中一个非常重要的组件.他涉及到了负载均衡.限流等组件.真正意义上掌握了feign可以说就掌握了微服务. 一.feign的使用 f ...
- 微服务---Eureka注册中心(服务治理)
在上一篇的初识SpringCloud微服务中,我们简单讲解到服务的提供者与消费者,当服务多了之后,会存在依赖与管理之间混乱的问题,以及需要对外暴露自己的地址,为了解决此等问题,我们学习Eureka注册 ...
- 微服务 - Eureka注册中心
我们来解决微服务的第一问题,服务的管理. 服务中心对外提供服务,需要对外暴露自己的地址.而consumer(调用者)需要记录服务提供者的地址.将来地址出现变更,还需要及时更新.这在服务较少的时候并不觉 ...
- 微服务注册与发现 —— eureka
基础概念 在微服务系统中,服务的注册和发现是第一步,常用的有: Eureka:https://github.com/Netflix/eureka Zookeeper:https://zookeeper ...
- 微服务框架SpringCloud(Dalston版)学习 (一):Eureka服务注册与发现
eureka-server eureka服务端,提供服务的注册与发现,类似于zookeeper 新建spring-boot工程,pom依赖: <dependency> <groupI ...
- 分享知识-快乐自己:微服务的注册与发现(基于Eureka)
1):微服务架构 服务提供者.服务消费者.服务发现组件这三者之间的关系: 各个微服务在启动时,将自己的网络地址等信息注册到服务发现组件中,服务发现组件会存储这些信息. 服务消费者可从服务发现组件查询服 ...
- SpringCloud微服务(01):Eureka组件,管理服务注册与发现
本文源码:GitHub·点这里 || GitEE·点这里 一.Eureka基本架构 1.Eureka简介 Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,SpringCl ...
随机推荐
- 安装node/npm/webpack步骤
nodejs软件的下载地址:https://nodejs.org/en/ 1.只要安装好了nodejs,就自动安装好了npm包. 2.在cmd中通过命令node -version查看是否安装好node ...
- poj2828 Buy ticket
Description Railway tickets were difficult to buy around the Lunar New Year in China, so we must get ...
- Tensorflow之MNIST解析
要说2017年什么技术最火爆,无疑是google领衔的深度学习开源框架Tensorflow.本文简述一下深度学习的入门例子MNIST. 深度学习简单介绍 首先要简单区别几个概念:人工智能,机器学习,深 ...
- python专题-异常处理(基础)
之前在学习python的时候有整理过python异常处理的文章,不够简单也不够完整,所以决定再整理一篇,算做补充. http://www.cnblogs.com/cmt110/p/7464748.ht ...
- php精简完全小结(linux/laravel篇)
php官网:http://www.php.netphp版本: 查看:php -version说明:None-Thread Safe就是非线程安全,在执行时不进行线程(thread)安全检查:Threa ...
- input长度随输入内容动态变化 input光标定位在最右侧
<input type="text" onkeydown="this.onkeyup();" onkeyup="this.size=(this. ...
- CGLIB 动态代理的实现
详见: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp92 JDK实现动态代理需要实现类通过接口定义业务方法,对于没有接口的类 ...
- linux系统下C语言调用lapack ,blas库
在利用C语言编程,经常调用其他的软件包,其中lapack,blas库是最常用的两个库,这里讲下在linux系统下,C语言编程如何调用这两个库: 1.首先讲下blas库的调用,这里以两个向量内积函数为例 ...
- PCB Design_经验之谈
所谓覆铜,就是将PCB上闲置的空间作为基准面,然后用固体铜填充,这些铜区又称为灌铜.敷铜的意义在于,减小地线阻抗,提高抗干扰能力:降低压降,提高电源效率:与地线相连,还可以减小环路面积.也出于让PCB ...
- Banner图二三事
前 言 JRedu 作为一个准前端学员,banner图可是很重要的呢.本人,小白一只,给大家分享几个刚刚学习的基础banner图事件.~~~ 1. 小广告图滚动播放 1.1HTML代码 首先,创 ...