点击上方 Coding这件小事 ,选择 星标 公众号

重磅资讯、干货,第一时间送达

文章转自:Java知音

网上教程具体如下图

注册中心,开了N个端口就创建了N个Module
还有的就是各种创建eureka然后互相注册,对于新手来说是很大的误解
以及在client去注册的时候,注册中心要写几个
下面开始叙述并实际验证下

准备工作

当前的技术以及工具

  • IDEA2018.3

  • JDK1.8

  • Gradle 5.0

  • tomcat 7

需要你对基本的微服务有一点点的了解,如果不知道什么是微服务,百度基本学习下也不会花很长时间

首先创建公共依赖管理

一步一步创建一个Gradle的初始项目就可以了
配置文件

gradle.perproties 无此文件自行创建

## dependency versions.

springBootVersion=2.1.2.RELEASE

springCloudVersion=Finchley.RELEASE

### docker configuration

#gradle docker plugin version

transmodeGradleDockerVersion=1.2

#This configuration is for docker container environment to access the local machine host,in Chinese is "宿主机" ip.

hostMachineIp=127.0.0.1

build.gradle

buildscript {

   repositories {

       maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }

       maven { url "https://oss.sonatype.org/content/groups/public/" }

       maven { url "https://repo.spring.io/libs-milestone/" }

       jcenter()

       mavenCentral()

   }

   dependencies {

       classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")

   }

}

allprojects {

   apply plugin: 'java'

   apply plugin: 'org.springframework.boot'

   apply plugin: 'io.spring.dependency-management'

   group = 'store.zabbix'

   version = '0.0.1-SNAPSHOT'

   sourceCompatibility = '1.8'

   repositories {

       maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }

       maven { url "https://oss.sonatype.org/content/groups/public/" }

       maven { url "https://repo.spring.io/libs-milestone/" }

       jcenter()

       mavenCentral()

   }

   dependencies {

       implementation 'org.springframework.boot:spring-boot-starter-web'

       testImplementation "org.springframework.boot:spring-boot-starter-test"

   }

   dependencyManagement {

       imports {

           mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"

       }

   }

}

setting.gradle

rootProject.name = 'springcloud-tools'

def dir = new File(settingsDir.toString())

def projects = new HashSet()

def projectSymbol = File.separator + 'src'

dir.eachDirRecurse { subDir ->

   def subDirName = subDir.canonicalPath

   def isSubProject = true

   if (subDirName.endsWith(projectSymbol)) {

       for (String projectDir in projects) {

           if (subDirName.startsWith(projectDir)) {

               isSubProject = false

               break

           }

       }

       if (isSubProject) {

           projects << subDirName

           def lastIndex = subDirName.lastIndexOf(projectSymbol)

           def gradleModulePath = subDirName.substring(dir.canonicalPath.length(), lastIndex).replace(File.separator, '')

           println "include " + gradleModulePath

           include gradleModulePath

       }

   }

}

//include('tools-eureka')

至此我们创建了一个新的项目,结构图红色圈内的后续创建

我们开始创建eureka-server

build.gradle
其依赖已在父类公共管理
这里只需要声明现在所需要的依赖即可

dependencies {

   implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-server'

   testImplementation 'org.springframework.boot:spring-boot-starter-test'

}

application.yml

spring:

 application:

   name: eureka-server

 profiles:

   active: server1

application-server1.yml

server:

 port: 8000

eureka:

 client:

   # 表示是否注册自身到eureka服务器

   # register-with-eureka: false

   # 是否从eureka上获取注册信息

   # fetch-registry: false

   service-url:

     defaultZone: http://127.0.0.1:8001/eureka/,http://127.0.0.1:8002/eureka/

application-server2.yml

server:

 port: 8001

eureka:

 client:

   # 表示是否注册自身到eureka服务器

   # register-with-eureka: false

   # 是否从eureka上获取注册信息

   # fetch-registry: false

   service-url:

     defaultZone: http://127.0.0.1:8000/eureka/,http://127.0.0.1:8002/eureka/

#spring:

#  application:

#    name: eurka-server2

applicayion-server3.yml

server:

 port: 8002

eureka:

 client:

   # 表示是否注册自身到eureka服务器

   # register-with-eureka: false

   # 是否从eureka上获取注册信息

   # fetch-registry: false

   service-url:

     defaultZone: http://127.0.0.1:8001/eureka/,http://127.0.0.1:8000/eureka/

#spring:

#  application:

#    name: eurka-server3

ToolsEurekaApplication.java

核心:注解@EnableEurekaServer

@EnableEurekaServer

@SpringBootApplication

public class ToolsEurekaApplication {

   public static void main(String[] args) {

       SpringApplication.run(ToolsEurekaApplication.class, args);

   }

}

创建eureka-client来注册到eureka-server

快速创建一个Gradle的SpringBoot项目

build.gradle

dependencies {

   implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'

}

ToolsEurekaClientApplication.java

核心注解:@EnableEurekaClient

package store.zabbix.toolseurekaclient;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication

@EnableEurekaClient

@RestController

public class ToolsEurekaClientApplication {

   public static void main(String[] args) {

       SpringApplication.run(ToolsEurekaClientApplication.class, args);

   }

   @Value("${server.port}")

   private int port;

   @GetMapping("test")

   public String showPort(){

       return "my port is "+port ;

   }

}

application.yml

eureka:

 client:

   service-url:

     defaultZone: http://127.0.0.1:8000/eureka/

server:

 port: 8762

spring:

 application:

   name: tools-eureka-client

开始启动eureka-server

新建启动类并配置

第一次启动启动类之后会存在一个启动配置
如上图一样去复制一个,然后在options里指定一下你需要启动的项目资源配置文件

-Dspring.profiles.active=server2

启动配置的名字可以自定义
建议带上端口

上图得知我们已经启动了3个端口,并互相注册了

已经相互注册成功了
接下来我们把注释的开启

# 表示是否注册自身到eureka服务器

# register-with-eureka: false

# 是否从eureka上获取注册信息

# fetch-registry: false  

修改后的application.yml

#server:

#  port: 8761

eureka:

#  instance:

#    hostname: server1

 client:

   register-with-eureka: false

   fetch-registry: false

#    service-url:

#      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

##server.port: 指明了应用启动的端口号

##eureka.instance.hostname: 应用的主机名称

##eureka.client.registerWithEureka: 值为false意味着自身仅作为服务器,不作为客户端

##eureka.client.fetchRegistry: 值为false意味着无需注册自身

##eureka.client.serviceUrl.defaultZone: 指明了应用的URL

#spring:

#  application:

#    name: eurka-server

spring:

 application:

   name: eureka-server

 profiles:

   active: server1

之后把三个端口的都重启下

可以看到不会注册自己的,我想基础区别也在这个界面了

启动顺序 eureka-server => eureka-client

启动eureka-client

看到这里我们访问的是http://127.0.0.1:8002/
虽然我们配置的是8000端口
但还是在8002端口注册了,也就是这也是eureka互相注册之后达到的高可用的效果,集群,我们可以把8000和8001端口宕掉,不影响使用

提示

  1. 上面的启动配置是需要启动几个端口就要配置几个

  2. 项目跑起来的时候有时候会抛些错误,试着重启下,访问下如果正常就可以 ,一般就是超时或者自己寻找不到注册自己的服务中心

  3. VM options:-Dspring.profiles.active=xxx,启动类这里配置的是你application-xxx.yml名字里的xxx,-D是用java默认原生属性 3.除了上面那样指定配置文件,还可以用Program arguments来指定

源码地址:https://github.com/cuifuan/springcloud-tools

本文参考

https://github.com/happyyangyuan/springcloud-quickstart http://www.cnblogs.com/hfultrastrong/p/8547236.html

能点个「在看」再走嘛?

hadoop 9000端口的服务未启动_IDEA 微服务单项目多端口启动相关推荐

  1. re.containerbase.startinternal 子容器启动失败_微服务架构:基于微服务和Docker容器技术的PaaS云平台架构设计(微服务架构实施原理)...

    走过路过不要错过 点击蓝字关注我们 基于微服务架构和Docker容器技术的PaaS云平台建设目标是给我们的开发人员提供一套服务快速开发.部署.运维管理.持续开发持续集成的流程.平台提供基础设施.中间件 ...

  2. 基于阿里云容器服务的微服务实践 - Part 1. 微服务与Docker

    基于阿里云容器服务的微服务实践 基于阿里云容器服务的微服务实践 - Part 1. 微服务与Docker 作者:chszs,未经博主允许不得转载.经许可的转载需注明作者和博客主页:http://blo ...

  3. 从零开始学习微服务 -微服务基本概述、微服务案例

    1. SpringCloud概述 1.1 互联网应用架构 1.1.1 单体应用架构 在诞⽣之初,项目的⽤户量.数据量规模都⽐较⼩,项目所有的功能模块都放在一个工程中编码. 编译.打包并且部署在一个To ...

  4. 微服务升级优点_SpringCloud微服务架构升级总结

    原标题:SpringCloud微服务架构升级总结 1.1 应用系统的架构历史 1.2 什么是微服务? 起源:微服务的概念源于 2014 年 3 月 Martin Fowler 所写的一篇文章" ...

  5. 合沟微服务怎么添加_微服务架构:动态配置中心搭建

    版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! 在微服务架构中,服务之间有着错综复杂的依赖关系,每个服务都有自己的依赖配置,在运行期间很多配置会根据访问流量等因素进行调整,传统的配置信息 ...

  6. 微服务平台建设之微服务2.0技术选型思考

    前言 前事不忘后事之师,本篇博客是在拜读和学习了杨波的<微服务架构技术栈选型手册>后结合自己的整理和思考. https://www.infoq.cn/article/micro-servi ...

  7. SpringCloud微服务架构实战:微服务治理

    微服务治理 Spring Cloud 工具套件为微服务治理提供了全面的技术支持.这些治理工具主要包括服务的注册与发现.负载均衡管理.动态路由.服务降级和故障转移.链路跟踪.服务监控等.微服务治理的主要 ...

  8. 容器化技术与微服务结合---结合springcloud微服务框架进行部署(含切换成阿里云docker仓库)(五)

    目录 系列 更换成阿里云仓库 开通阿里云镜像服务 创建仓库 本地k8s切换成阿里云的镜像仓库 测试阿里云镜像 准备简单的微服务 eureka 应用配置 k8s配置: demo-a 应用配置 k8s配置 ...

  9. 乐优商城--服务(三) : 商品微服务(LyItemApplication)--前半部分

    商品微服务--前半部分: 1. 微服务结构(ly-item) 1.0 顶级父工程(le-you) 1.1 ly-item 1.1.1 ly-item-interface 1.1.1.1 添加依赖 1. ...

最新文章

  1. 微信小程序开发中如何实现侧边栏的滑动效果?
  2. linux cat 命令详解
  3. Python入门100题 | 第043题
  4. flask渲染图像_用于图像推荐的Flask应用
  5. UVA - 213 Message Decoding
  6. 视频剪辑什么鬼?Python 带你高效创作短视频
  7. android c++ http,开源一个C++实现的简单HTTP协议处理库
  8. Kepware AB驱动 · 秒懂百科
  9. Python机器学习算法之逻辑回归算法
  10. 半桥llc 增益 matlab程序,“狠”完整的LLC谐振半桥电路分析与计算!
  11. 夕阳美,美到骨子里了
  12. iOS横屏电子签名上篇【核心原理: 旋转特定的屏幕 Quartz2D】应用场景:采集电子签名,支持签名界面为横屏其余页面都是竖屏、清除重写、灵活控制提示语信息、以及查看商户协议等
  13. 远程桌⾯连接电脑后键盘失灵解决方案
  14. windows应用程序与控制台应用程序的区别
  15. J2EE三层架构简介
  16. Cris 学 SpringMVC(二):使用 servlet 原生 api 作为方法入参
  17. 二级c语言考试系统安卓,无忧考吧二级c语言考试系统下载_无忧考吧二级c语言考试系统官方下载-太平洋下载中心...
  18. Delphi7.0破解及常用三方控件的安装
  19. 交通银行上海分行信息部总经理吴宇:大数据助力”互联网+金融”发展
  20. 小程序毕业设计 基于微信菜谱小程序毕业设计开题报告参考

热门文章

  1. c语言第四章作业,大学C语言第四章作业答案
  2. python datasets_python基础之sklearn.datasets
  3. centos7使用yum安装jdk并配置jdkhome
  4. 如何查看夜神模拟器的端口
  5. Linux-lsof命令
  6. 各样本观察值均加同一常数_对色师傅分享:如何使不同观察者在灯箱下观察的色光一致?...
  7. java 整合hadoop_Spark 如何摆脱java双亲委托机制优先从用户jar加载类?
  8. c语言编程员工信息排序,员工工资管理系统(c语言编程)
  9. 怎么用python自动注册_python selenium自动化(二)自动化注册流程
  10. dpkg安装软件流程_ubuntu安装搜狗输入法linux版