Spring Cloud服务发现组件Eureka

简介

Netflix Eureka是微服务系统中最常用的服务发现组件之一,非常简单易用。当客户端注册到Eureka后,客户端可以知道彼此的hostname和端口等,这样就可以建立连接,不需要配置。

Eureka 服务端

添加Maven依赖:

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

添加注解@EnableEurekaServer到Spring Boot的启动类中:

package com.pkslow.cloud.eureka;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

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

配置端口号:

server:
  port: 8761
eureka:
  client:
    fetch-registry: false
    register-with-eureka: false

然后启动服务,在浏览器中打开: http://localhost:8761/

我们就可以看到服务端的信息了,但目前还没客户端注册。

Eureka客户端

只有注册到Eureka服务端的服务,才能被其它服务发现。

添加依赖如下:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

添加注解@EnableEurekaClient

package com.pkslow.cloud.rest;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

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

把服务端的地址配置好:

spring.application.name=rest-service
server.port=8081
pkslow.admin=larry|18|admin@pkslow.com
eureka.client.service-url.defaultZone: http://localhost:8761/eureka
eureka.instance.prefer-ip-address=true
management.endpoints.web.exposure.include=*

注意这个spring.application.name是很关键的,以它为名字注册到Eureka。

启动该服务,并刷新Eureka服务端的页面:

就可以看到有服务注册上来了。

代码

代码请看GitHub: http://github.com/LarryDpk/pkslow-samples

本文转载于网络 如有侵权请联系删除

相关文章

  • 5.6(java学习笔记) queue

    一.queue接口queue的中文意思是队列,是一种以先进先出方式处理数据的集合。队列还提供额外的插入、提取和检查操作。这些方法都以两种形式存在:一种在操作失败时抛出异常,另一种返回特殊值(根据操作,为空或为假)。后一种形式的插入操作是专门针对容量受限的队列实现设计的有些方法以两种形式存在,只是操作失败时处理的方式不同,一个是抛出异常,一个是返回特殊值(false或null)。这个根据自己需要进行选择。实现这个接口的类有:下面说两个常用方法。1.booleanoffer(Ee)向队列中插入元素,如果操作成功返回true,反之返回false。2.Epoll()检索并移除队列的头部,返回移除的队列头部元素,如果头部为空则返回null。我们来举个例子:importjava.util.ArrayDeque; importjava.util.Queue; publicclassDemo01{ publicstaticvoidmain(String[]args){ Queue<Request>que=newArrayDeque<Request>();//ArrayDequ

  • 重学webpack4之构建速度提升和体积优化

    复制❝本文由作者xfz授权发布 ❞构建速度优化速度分析:speed-measure-webpack-plugin可以查看每个loder和插件的执行耗时红色字体表示时间过长,黄色还可以,绿色是ok的module.exports=smg.wrap(webpackConfig) 复制wepback4vswepback3webpack使用V8,forof替代forEach、Map和set代替Object、includes替代indexOf等默认使用更快的md4hash算法webpackAST可以直接从loader传递给AST,减少解析时间使用字符串方案替代正则表达式,正则表达式运算较慢多进程/多实例构建thread-loader(推荐:wepback4使用)每次wepback解析一个模块,thread-loader会将它及它的依赖分配给worker线程中module:{ rules:[ { test:/.js$/, //include:path.resolve('src'), use:[ { loader:'thread-loader', option

  • 如何在Docker容器中运行Docker [3种方法]

    在本博客中,我将向您介绍在docker中运行docker所需的三种不同方法。 DockerInDocker的用处dockerIndocker的一个潜在用处是CI管道,在代码成功构建后,您需要在其中构建docker镜像并将其推送到容器镜像仓库。使用VM构建Docker映像非常简单。但是,当您计划将基于Jenkinsdocker的动态代理用于CI/CD管道时,dockerIndocker是必备功能。沙盒环境。出于实验目的,在您的本地开发工作站上。在Docker容器中运行Docker在Docker中实现Docker的三种方法通过挂载docker.sock(DooD方法)运行dockerdind方法使用NestyboxsysboxDocker运行时让我们详细了解每个选项。确保在主机中安装了docker来尝试此设置。方法1:使用[/var/run/docker.sock]的Docker中运行Docker什么是/var/run/docker.sock?/var/run/docker.sock是默认的Unix套接字。套接字用于在同一主机上的进程之间进行通信。Docker守护程序默认情况下侦听dock

  • OMIM数据库简介

    OMIM全称叫做OnlineMendelianInheritanceinMan,是一个不断更新的人类孟德尔遗传病的数据库。这个数据库主要关注人类基因变异和表型性状之间的关系。网址如下:https://omim.org/数据库中的每一条记录,都会有一个唯一的由6位数字组成的OMIM编号,不同数字开头的编号含义不同,其中:数字1和2开头的,代表常染色体上的相关位点和表型(1995年之前创建的)数字3开头的,代表X染色体上的相关位点和表型数字4开头的,代表Y染色体上的相关位点和表型数字5开头的,代表线粒体上的相关位点和表型数字6开头的,代表常染色体上的相关位点和表型(1995年之后创建的) 对于等位基因,每一条记录都有一个唯一的MIM编号,由点号分隔的两部分构成,点号之前是突变位点对应的OMIM编号,点号之后是一个由4位数字构成的唯一ID,用来记录等位基因。以IX基因为例,对应的等位基因有300746.0001和300746.0101两个MIM编号。这个数据库是不断更新的,截止到2018年5月29号,数据库中的数据记录如下:数据库中的记录,分成了5个类别。1.Genedescription

  • Spring Boot + Vue 如此强大?竟可以开发基于 C/S 架构的应用

    前言 虽然B/S是目前开发的主流,但是C/S仍然有很大的市场需求。受限于浏览器的沙盒限制,网页应用无法满足某些场景下的使用需求,而桌面应用可以读写本地文件、调用更多系统资源,再加上Web开发的低成本、高效率的优势,这种跨平台方式越来越受到开发者的喜爱。 Electron是一个基于Chromium和Node.js,使用HTML、CSS和JavaScript来构建跨平台应用的跨平台开发框架,兼容Mac、Windows和Linux。目前,Electron已经创建了包括VScode和Atom在内的大量应用。环境搭建创建Electron跨平台应用之前,需要先安装一些常用的工具,如Node、vue和Electron等。安装Node进入Node官网下载页http://nodejs.cn/download/,然后下载对应的版本即可,下载时建议下载稳定版本。如果安装Node使用Homebrew方式,建议安装时将npm仓库镜像改为淘宝镜像,如下所示。npmconfigsetregistryhttp://registry.npm.taobao.org/ 或者 npminstall-gcnpm--regist

  • RPA行业未来发展十大趋势

    RPA行业未来发展十大趋势!你关注的都在这里 未来前景如何?这里有2020年后的RPA行业发展十大趋势文/王吉伟 自IBM、微软、谷歌、Oracle、SAP等名牌大厂优先将RPA(RoboticProcessAutomation,机器人流程自动化)集成于BPM解决方案之后,一众云计算、SaaS、企服软件、人工智能、系统集成等厂商纷纷跟进。由此,以Uipath、BluePrism、AutomationAnywhere(AA)为代表的RPA技术供应商成为当代业务流程自动化、数字化及智能化的焦点,而RPA也正在成为主流的业务自动化解决方案之一。 在Uipath和AA的两起巨额融资和超高估值曝光之后,RPA随即成为中国资本机构的掌上明珠。随着几起投资的敲定,国内的RPA项目同样也因融资与估值备受关注。由此,RPA开始在2019年大量曝光。虽然一些厂商多年前就开始专注RPA,虽然很多企业几年前就已经使用RPA,虽然现在国内炙手可热的通用型RPA项目两年前就已上线,但2019年才是真正的RPA元年。这一年,国内RPA初创企业崭露头角;这一年,RPA成为创投领域新风口;这一年,国外RPA企业接连进入

  • mysql数据库的常用知识

    问题一:如果使用可视化工具链接mysql?mysql默认情况下是不支持远程连接的!只需要几个步骤就能轻松搞定了。1.vi/etc/mysql/my.cnf修改里面bind-address项,将127.0.0.1改成0.0.0.02.重启mysql,servicemysqlrestart3.最后执行赋权命令:mysql-u用户名-p密码-e"GRANTALLPRIVILEGESON*.*TO'赋权的用户名'@'%'IDENTIFIEDBY'赋权的密码'WITHGRANTOPTION;"例:mysql-uroot-proot123-e"GRANTALLPRIVILEGESON*.*TO'root'@'%'IDENTIFIEDBY'root123'WITHGRANTOPTION;"问题二:常见的一些修改操作?1.修改表增加字段 altertable表名add字段名限制; 例: altertabletestaddtestcolumnva

  • 划时代的三星Galaxy S9|S9+,会有哪些惊艳你的点?

    为喜欢玩的你,专属打造。2月底,在MWC2018大会上,三星正式发布了新一代旗舰手机GalaxyS9|S9+,随即引起热烈的关注。在本届MWC上,GalaxyS9+凭借出色的相机功能、快捷的解锁方式、身临其境的声效体验等众多亮点一口气拿下了超过30项奖项,其中,在SMA全球移动大奖(GLOMOAwards)颁奖典礼上,它更是被评选为“最佳新款联网设备(BestNewConnectedDevice)”。一时间,社会各界对其是好评如潮,以独立摄影实验室DxOMark为例,认为三星S9+的综合拍摄得分为99分,这个分数名列DxOMark排行榜的首位,其中拍照得分就高达104分,而视频拍摄也得到了91分:那么这部备受关注、科技满满的具有划时代意义的安卓“机皇”到底都有哪些亮点呢?亮点一:闻所未闻的“智能可变光圈”相机技术首先不得不说的就是其“脱胎换骨”的相机。三星手机的拍照功能一向很好,这是大家都有目共睹的,但是为了精益求精,三星今年即将发布的S9新机采用了一项闻所未闻的全新技术,叫智能可变光圈。智能可变光圈,顾名思义,就是该机的主镜头光圈不再像以往的手机那样固定,而是可以进行大小调节,而这带

  • 行人重识别 Person Re-identification知识资料全集

    【导读】主题荟萃知识是专知的核心功能之一,为用户提供AI领域系统性的知识学习服务。主题荟萃为用户提供全网关于该主题的精华(Awesome)知识资料收录整理,使得AI从业者便捷学习和解决工作问题!在专知人工智能主题知识树基础上,主题荟萃由专业人工编辑和算法工具辅助协作完成,并保持动态更新!另外欢迎对此创作主题荟萃感兴趣的同学,请加入我们专知AI创作者计划,共创共赢!专知为大家呈送专知主题荟萃知识资料大全集荟萃(入门/进阶/综述/视频/代码/专家等),请大家查看!专知访问www.zhuanzhi.ai,或关注微信公众号后台回复"专知"进入专知,搜索感兴趣主题查看。此外,我们也提供该文网页桌面手机端(www.zhuanzhi.ai)完整访问,可直接点击访问收录链接地址,以及pdf版下载链接,请文章末尾查看!此为初始版本,请大家指正补充,欢迎在后台留言!欢迎大家转发分享~行人重识别PersonRe-identification/PersonRetrieval专知荟萃行人重识别PersonRe-identification/PersonRetrieval专知荟萃入门学习进阶论

  • 钉钉小程序------子组件监测父组件的数据更新

    把要监听的数据放在app.js中,在子组件中使用了定时器去监听app.js里面的数据改变,网上有很多其他人的方法,很不错,但是我不大看得懂,自己做的这个用了定时器,可能性能就不是那么好了。。。 1.在app.js中存放数据,并且获取父组件改变过的值。 App({ globaldata:{ lastRelVal:'',//需要监听的数据 }, //实时更新的数据 setChangeData(data){ this.globaldata.lastRelVal=data } }); 复制 2.在父组件中改变该数据。   letapp=getApp()//引入app.js varlastRelVal='' Page({ data:{ }, //页面加载完成 onReady(){ this.setData() }, //改变app.js里面的值 setData(){ for(leti=0;i<=10;i++){ lastRelVal=i app.setChangeData(lastRelVal) } }, });复制 3.在子组件中每隔1s取app.js的值 letapp=ge

  • JavaScript 有用的代码片段和 trick

    浮点数取整 constx=123.4545; x>>0;//123 ~~x;//123 x|0;//123 Math.floor(x);//123 注意:前三种方法只适用于32个位整数,对于负数的处理上和Math.floor是不同的。 Math.floor(-12.53);//-13 -12.53|0;//-12 生成6位数字验证码 //方法一 ('000000'+Math.floor(Math.random()* 999999)).slice(-6);   //方法二 Math.random().toString().slice(-6);   //方法三 Math.random().toFixed(6).slice(-6);   //方法四 ''+Math.floor(Math.random()*999999); 16进制颜色代码生成 (function(){  return'#'+('00000'+   

  • GoldenGate 配置extract,replicat进程自启动

    在GoldenGate中主进程是manager进程,使用startmgr启动。可以在mgr进程中添加一些参数用来在启动mgr进程的同时启动extract和replicat进程   GGSCI (gg01) 130> VIEW params mgr   --mgr主进程端口号   PORT 7809   --动态端口,当指定端口不可用时,会从以下列表中选择一个可用端口   DYNAMICPORTLIST 7800-7909   --启动mgr进程启动启动extract进程   AUTOSTART EXTRACT *   --当extract进程异常终止时会自动启动,每5分钟尝试重新启动所有的extract进程,一共尝试3次,5分钟清零   AUTORESTART EXTRACT *,RETRIES&nbs

  • tomcat maven插件启动报错tomcat-users.xml cannot be read

    tomcatmaven插件启动报错tomcat-users.xmlcannotberead [ERROR]Failedtoexecutegoalorg.codehaus.mojo:tomcat-maven-plugin:1.1:run(default-cli)onprojectmetaDB:CouldnotstartTomcat:MemorydatabasefileD:\WORK\target\tomcat\conf\tomcat-users.xmlcannotberead->[Help1] 解决:   删掉${baseDir}/target/tomcat目录(mvnclean),重新执行命令tomcat:run,搞定。   如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力! 如果标题被标记为转载,转载请注明原作者地址,详见引用 版权声明,转载请注明出处:http://www.cnblogs.com/JsonShare

  • 文本导出导入之PG:copy与Oracle:sqlldr

    文本文件是人类友好的信息表示形式,但是由于各个品牌的数据库由于存储引擎的不同,内部数据的存储形式也各有不同,主流数据库都提供了从文本文件载入数据到表(关系)的工具,对于Oracle数据库,原生提供的工具是sqlldr(用于将文本文件的数据导入表中,反向来用于将表导出表文本文件的是sqluldr2(非官方),默认是没有的,需要自行下载安装)。 由于sqlldr和PG的COPY命令的基本用法类似,以下主要演示PG的COPY命令将表(视图)的数据导出到文本文件,以及将文本文件的数据导入表中的过程。 查看COPY命令的用法: mydb-#\hcopyCommand:COPYDescription:copydatabetweenafileandatableSyntax:COPYtable_name[(column_name[,…])]FROM{‘filename’|PROGRAM‘command’|STDIN}[[WITH](option[,…])] COPY{table_name[(column_name[,…])]|(query)}TO{‘filename’|PROGRAM‘command’

  • 深入解析 Java集合类ArrayList与Vector的区别

      集合类分为两个分支,Collection与Map,其中Collection接口继承了Iterator接口,继承Iterator接口的类可以使用迭代器遍历元素(即Collection接口的类都可以使用),今天我们从相同点、不同点、以及JDK源码等各个方面来深入解析下,底层使用数组实现的两个集合类:ArrayList与Vector的区别与联系 区别与联系: 1.ArrayList出现于jdk1.2,vector出现于1.0.两者底层的数据存储都使用的Object数组实现,因为是数组实现,所以具有查找快(因为数组的每个元素的首地址是可以得到的,数组是0序的,所以:被访问元素的首地址=首地址+元素类型字节数*下标  ),增删慢(因为往数组中间增删元素时,会导致后面所有元素地址的改变)的特点 2.继承的类实现的接口都是一样的,都继承了AbstractList类(继承后可以使用迭代器遍历),实现了RandomAccess(标记接口,标明实现该接口的list支持快速随机访问),cloneable接口(标识接口,合法调用clone方法),serializable(序列化标识接口

  • Docker连接私服

    使用docker-compose搭建了一个Nexus私服,配置好docker-repository后开始连接配置 1、配置dameon.json,路径:/etc/docker/dameon.json { "registry-mirror":[ "https://registry.docker-cn.com" ],"insecure-registries":["${ip}:${端口}"]} 复制   配置后重启docker systemctldaemon-reload systemctlrestartdocker 复制 2、docker登录私服 dockerlogin-u[docker私服用户名]-p[docker私服密码][ip]:[端口] 复制 3、给镜像打tag,IMAGEID,可以用dockerimages查看 dockertag[镜像id][ip]:[port]/[项目名]/[镜像名]:[镜像版本号] 复制 4、推送 dockerpush[ip]:[port]/[项目名]/[镜像名]:[镜像版本号] 复制  

  • Alpha 冲刺 (5/10)

    组长博客:https://www.cnblogs.com/heihuifei/p/9990677.html 作业博客:https://edu.cnblogs.com/campus/fzu/Grade2016SE/homework/2366 目录组员情况组员1(组长):胡绪佩组员2:胡青元组员3:庄卉组员4:家灿组员5:凯琳组员6:翟丹丹组员7:何家伟组员8:政演组员9:黄鸿杰组员10:刘一好组员11:何宇恒展示组内最新成果团队签入记录燃尽图站立会议合照会议耗时记录(每次追加记录)个人PSP个人学习进度条 组员情况 组员1(组长):胡绪佩 过去两天完成了哪些任务 完成主界面; 项目进度推进; 和其他界面的交互跳转 初步完成删除界面 描述: 对alpha版本展示deadline来临加快进度。 完成自己负责的前端界面。 展示GitHub当日代码/文档签入记录: 暂无 接下来的计划: 删除界面完善。 还剩下哪些任务: 备忘录删除界面完善。 和其他前端界面的交接跳转。 有哪些困难: 删除界面的细节处理。 checkbox的勾选监听。 有哪些收获和疑问 了解认识到一个项目的大

  • Dev官网文档地址

    文档地址:https://docs.devexpress.com/ wpf:https://docs.devexpress.com/WPF/7875/wpf-controls winform:https://docs.devexpress.com/WindowsForms/7874/winforms-controls asp.NET: https://docs.devexpress.com/AspNet/7873/aspnet-webforms-controls blazor:https://docs.devexpress.com/Blazor/400725/blazor-components  

  • .net 使用log4net日志功能

    (一)在 .netcore中使用   新建一个配置文件,输入以下代码 <?xmlversion="1.0"encoding="utf-8"?> <configuration> <configSections> <sectionname="log4net"type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/> </configSections> <log4net> <loggername="InfoLog"> <levelvalue="INFO"/> <appender-refref="InfoLogAppender"/> </logger> <loggername="ErrorLog"> <levelvalue="INFO"/> <appender-refref="ErrorLogAppender"/> </log

  • 朴素贝叶斯法

    朴素贝叶斯法 朴素贝叶斯(naivebayes)法是基于贝叶斯定理和特征条件独立假设的分类方法。对于给定的训练数据集,首先基于特征条件独立假设学习输入输出的联合概率分布,然后基于此分布,对给定的输入\(x\)利用贝叶斯定理求其后验概率最大的输出。 一、朴素贝叶斯法的学习 1.1基本方法 设输入空间\(\chi\subseteqR^n\)为n维向量的集合,输出空间维类标记集合\(Y=\{c_1,c_2,...,c_k\}\)。输入特征向量\(x\in\chi\),输出为类标记\(y\inY\)。\(p(x,y)\)是\(x,y\)的联合概率分布。训练的数据集: \[T=\{(x_1,y_1),(x_2,y_2),...,(x_N,y_n\} \]由\(p(x,y)\)独立同分布产生。 要得到训练数据集的联合概率分布,先得学习以下先验概率和条件概率: \[\begin{align} p(Y=c_k),k=1,2,...,K\notag\\ p(X=x|Y=c_k)=p(x^{(1)},x^{(2)},...,x^{(n)}|c_k)\tag{1} \end{align} \]其中(1)的条

  • docker 安装 swift语言

    安装 dockerpullswift 复制 运行 dockerrun-it--rmswift 复制 运行REPL出现错误 root@username:/#swift error:failedtolaunchREPLprocess:processlaunchfailed:'A'packetreturnedanerror:8 复制 解决方案:使用特权模式运行容器 dockerrun--privileged-it--rmswift 复制

相关推荐

推荐阅读