idea springcloud 多环境配置linux 端口查看无效

spring cloud配置注册中心显示服务的ip地址和端口
1.在springcloud中服务的 Instance ID
${spring.cloud.client.hostname}:${spring.application.name}:${spring.application.instance_id:${server.port}},
也就是:主机名:应用名:应用端口。如图1
2.可以自定义:
eureka.instance.instance-id=${spring.cloud.client.ipAddress}:${server.port}
eureka.instance.prefer-ip-address=true
这时实例名字就是主机ip地址+端口号,如图:
3.那么问题来了,此时鼠标放在实例上url指向的依然是主机名+端口号,如下图。这样客户端是访问不到实例的,我们必须让实例url指向 主机ip+端口号
4.解决办法:
eureka.instance.hostname= ${spring.cloud.client.ipAddress}
这里我们通过设置主机名为主机ip,那么上图红框内容就会变成如下图:
这样我们就可以通过ip+端口号访问实例了。
总结:springcloud是为分布式提供了一站式服务,其中eureka用于服务治理,它是基于Netflix Eureka 做了封装。上面记录的这个实例无法访问的问题是我们做微服务时遇到的一个问题,网上找了很久也没找到解答,最后还是自己解决的。
访问实例时url指向 → 主机名+端口号 ,这样是访问不到的,只能通过 主机IP+端口号才能访问,解决办法:
eureka.instance.hostname= ${spring.cloud.client.ipAddress}
Eureka注册服务列表显示ip+端口
eurekaclient向eurekaserver注册使用真实ip设置
Spring Cloud Netflix Eureka: 多网卡环境下Eureka服务注册IP选择问题
在spring cloud eureka中使用ip而不是hostname
Spring Cloud下配置eureka.instance.instance-id使得服务实例在eureka界面增加显示版本号
Spring Boot / Spring Cloud 项目中获取本项目端口号
springcloud服务已经关但是Eureka还是显示up
Spring Cloud中,Eureka常见问题总结
升级Spring Cloud到Finchley后的一点坑
没有更多推荐了,在idea环境下构建springCloud项目
转载 &更新时间:日 10:19:05 & 作者:onpwerb
本篇文章主要介绍了在idea环境下构建springCloud项目,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
&springCloud是基于springboot搭建的微服务。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。
spring cloud官方文档:
spring cloud 中文网 :
最终搭建后的工程源代码:
一、新建maven工程
根据spring cloud官方文档,在pom.xml导入如下代码
&!-- spring cloud 配置 --&
&groupId&org.springframework.boot&/groupId&
&artifactId&spring-boot-starter-parent&/artifactId&
&version&1.4.5.RELEASE&/version&
&dependencyManagement&
&dependencies&
&dependency&
&groupId&org.springframework.cloud&/groupId&
&artifactId&spring-cloud-dependencies&/artifactId&
&version&Camden.SR6&/version&
&type&pom&/type&
&scope&import&/scope&
&/dependency&
&/dependencies&
&/dependencyManagement&
&dependencies&
&dependency&
&groupId&org.springframework.cloud&/groupId&
&artifactId&spring-cloud-starter-config&/artifactId&
&/dependency&
&dependency&
&groupId&org.springframework.cloud&/groupId&
&artifactId&spring-cloud-starter-eureka&/artifactId&
&/dependency&
二、建立注册中心
新建名称为 discovery 的 module
1.在该module下的pom.xml导入如下配置:
&!-- @EnableEurekaServer --&
&dependencies&
&dependency&
&groupId&org.springframework.cloud&/groupId&
&artifactId&spring-cloud-netflix-eureka-server&/artifactId&
&!--&version&1.1.6.RELEASE&/version&--&
&/dependency&
&/dependencies&
2.在src/main/java目录下新建discovery文件夹,然后新建一个application
import org.springframework.boot.SpringA
import org.springframework.boot.autoconfigure.SpringBootA
import org.springframework.cloud.netflix.eureka.server.EnableEurekaS
@SpringBootApplication
@EnableEurekaServer
public class DiscoveryApplicaion {
public static void main(String[] args) {
SpringApplication.run(DiscoveryApplicaion.class, args);
3.在该module下的src/main/resources文件夹下,新建文件application.yml,配置注册中心eureka的相关服务
port: 8081
hostname: localhost
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
三、构建一个服务A
新建一个名为service的module
1.在src/main/java目录下新建service文件夹,然后新建一个application
import org.springframework.boot.SpringA
import org.springframework.boot.autoconfigure.SpringBootA
import org.springframework.cloud.client.discovery.EnableDiscoveryC
import org.springframework.web.bind.annotation.GetM
import org.springframework.web.bind.annotation.RestC
@SpringBootApplication
@EnableDiscoveryClient
@RestController
public class ServiceApplication {
@GetMapping("/service")
public String service(){
return "service";
public static void main(String[] args) {
SpringApplication.run(ServiceApplication.class, args);
2.在该module下的src/main/resources文件夹下,新建文件application.yml
application:
name: service.service
serviceUrl:
defaultZone: http://localhost:8081/eureka/
port: 8082
四、构建第二个服务B
新建一个名为service2的module
1.在src/main/java目录下新建service2文件夹,然后新建一个application
package service2;
import org.springframework.boot.SpringA
import org.springframework.boot.autoconfigure.SpringBootA
import org.springframework.cloud.client.discovery.EnableDiscoveryC
import org.springframework.web.bind.annotation.RequestM
import org.springframework.web.bind.annotation.RestC
@SpringBootApplication
@EnableDiscoveryClient
@RestController
public class Service2Application {
@RequestMapping("/service2")
public String service2(){
return "service2";
public static void main(String[] args) {
SpringApplication.run(Service2Application.class, args);
2.在该module下的src/main/resources文件夹下,新建文件application.yml
application:
name: service2
serviceUrl:
defaultZone: http://localhost:8081/eureka/
port: 8083
五、配置网关
新建名称为 gateway 的 module
1.在该module下的pom.xml导入如下配置:
import org.springframework.boot.SpringA
import org.springframework.boot.autoconfigure.SpringBootA
import org.springframework.cloud.netflix.eureka.EnableEurekaC
import org.springframework.cloud.netflix.zuul.EnableZuulP
@SpringBootApplication
@EnableZuulProxy
@EnableEurekaClient
public class GatewayApplication {
public static void main(String[] args) {
SpringApplication.run(GatewayApplication.class, args);
2.在src/main/java目录下新建gateway文件夹,然后新建一个application
serviceUrl:
defaultZone: http://localhost:8081/eureka/
application:
name: gateway
port: 8084
service: /service/**
service2: /service2/**
3.在该module下的src/main/resources文件夹下,新建文件application.yml
六、启动服务
先启动discovery模块,再启动其他模块
在浏览器依次输入:
http://localhost:8081/
http://localhost:8082/service
http://localhost:8083/service2
http://localhost:8084/service/service
http://localhost:8084/service2/service2
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具IntelliJ IDEA spring mvc +mybatis 环境搭建服务器(中) - 简书
IntelliJ IDEA spring mvc +mybatis 环境搭建服务器(中)
这里使用的是xml配置mybatis,如喜欢注解,请待下一篇。
1 修改配置,引入json、mybatis
在pom.xml中添加mybatis-spring、mybatis、mysql-connector-java(用于mysql连接)、jackson-core、jackson-databind(用于返回对象直接映射成json),整体工程现在配置如下:
&project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"&
&modelVersion&4.0.0&/modelVersion&
&groupId&com.nothing&/groupId&
&artifactId&hellospringmvc&/artifactId&
&packaging&war&/packaging&
&version&1.0-SNAPSHOT&/version&
&name&hellospringmvc Maven Webapp&/name&
&url&http://maven.apache.org&/url&
&dependencies&
&dependency&
&groupId&junit&/groupId&
&artifactId&junit&/artifactId&
&version&3.8.1&/version&
&scope&test&/scope&
&/dependency&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-core&/artifactId&
&version&4.2.5.RELEASE&/version&
&/dependency&
&dependency&
&groupId&com.fasterxml.jackson.core&/groupId&
&artifactId&jackson-core&/artifactId&
&version&2.7.2&/version&
&/dependency&
&dependency&
&groupId&com.fasterxml.jackson.core&/groupId&
&artifactId&jackson-databind&/artifactId&
&version&2.7.2&/version&
&/dependency&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-context&/artifactId&
&version&4.2.5.RELEASE&/version&
&/dependency&
&dependency&
&groupId&javax.servlet.jsp&/groupId&
&artifactId&jsp-api&/artifactId&
&version&2.2&/version&
&/dependency&
&dependency&
&groupId&jstl&/groupId&
&artifactId&jstl&/artifactId&
&version&1.2&/version&
&/dependency&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-web&/artifactId&
&version&4.2.5.RELEASE&/version&
&/dependency&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-webmvc&/artifactId&
&version&4.2.5.RELEASE&/version&
&/dependency&
&dependency&
&groupId&org.springframework.data&/groupId&
&artifactId&spring-data-jpa&/artifactId&
&version&1.9.4.RELEASE&/version&
&/dependency&
&dependency&
&groupId&javax.servlet&/groupId&
&artifactId&servlet-api&/artifactId&
&version&2.5&/version&
&/dependency&
&dependency&
&groupId&mysql&/groupId&
&artifactId&mysql-connector-java&/artifactId&
&version&5.1.38&/version&
&/dependency&
&dependency&
&groupId&org.mybatis&/groupId&
&artifactId&mybatis&/artifactId&
&version&3.3.1&/version&
&/dependency&
&dependency&
&groupId&org.mybatis&/groupId&
&artifactId&mybatis-spring&/artifactId&
&version&1.2.4&/version&
&/dependency&
&dependency&
&groupId&org.json&/groupId&
&artifactId&json&/artifactId&
&version&&/version&
&/dependency&
&/dependencies&
&finalName&hellospringmvc&/finalName&
&/project&
2 上篇的myspring-servlet.xml 和web.xml 不用修改。
3 配置mybatis conf.xml文件:
&?xml version="1.0" encoding="UTF-8" ?&
&!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd"&
&configuration&
&!-- development:开发模式
work:工作模式 --&
&environments default="development"&
&environment id="development"&
&transactionManager type="JDBC" /&
&dataSource type="POOLED"&
&property name="driver" value="com.mysql.jdbc.Driver" /&
&property name="url" value="jdbc:mysql://localhost:3306/mysql" /&
&property name="username" value="root" /&
&property name="password" value="123456" /&
&/dataSource&
&/environment&
&/environments&
&mapper resource="userMapper.xml" /&
&/mappers&
&/configuration&
需要注意的是,如下与jdbc连接的代码差不多的,这里使用xml配置,由于我使用的是mysql(如使用其他数据库请百度),url中为数据库的名称,我这里是mysql。后面两项是username 和password需自行配置。
这里需要注意路径:本文放在src/main/resources 目录下。我在这卡了很久。
userMapper.xml
&?xml version="1.0" encoding="UTF-8" ?&
&!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"&
&mapper namespace="userMapper"&
&!--根据ID获取对应的值
&select id="findUserById" parameterType="int" resultType="com.nothing.Model.User"&
select * from user_nothing where id = #{id}
&insert id="addUser" parameterType="com.nothing.Model.User"&
insert into user_nothing(username,password) values(#{username},#{password})
这里使用xml配置sql语句。user_nothing 在mysql数据库中创建的表。三个字段,待会给出。parameterType为输入参数 id的类型int,esultType="com.nothing.Model.User"为返回值User对象。
package com.nothing.M
public class User {
public String getUsername() {
public void setUsername(String username) {
this.username =
public String getPassword() {
public void setPassword(String password) {
this.password =
public User(String username, String password, int id) {
this.username =
this.password =
public User(String username, String password) {
this.username =
this.password =
public int getId() {
public void setId(int id) {
public User() {
public interface IUserDao {
public User findUserById(int id); //查询
public void addUser(User user); //添加
UserDaoImpl 才是正真的实现类,参与数据库curd,本文只有简单的单个查询。
public class UserDaoImpl implements IUserDao{
SqlSessionFactory sessionF
public UserDaoImpl() {
String resource = "conf.xml";
Reader reader = Resources.getResourceAsReader(resource);
sessionFactory = new SqlSessionFactoryBuilder().build(reader);
session = sessionFactory.openSession();
} catch (IOException e) {
e.printStackTrace();
public User findUserById(int id) {
String statement = "userMapper.findUserById";
User user = (User)session.selectOne(statement, 1);
public void addUser(User user) {
String statement = "userMapper.addUser";
session.insert(statement, user);
session.commit();
//一定要记得commit
UserService中间层,负责dao与controller交互,本文较简单,可省略。
public interface IUserService {
public User findUserById(int id);
public void addUser(User user);
UserServiceImpl真正实现
public class UserServiceImpl implements IUserService{
private IUserDao userD
public UserServiceImpl() {
userDao = new UserDaoImpl();
public User findUserById(int id) {
return userDao.findUserById(id);
public void addUser(User user){
userDao.addUser(user);
6 index.jsp 利用上次的剩余价值,吼吼。
&%@ page language="java" contentType="text/ charset=UTF-8" pageEncoding="UTF-8"%&
&%@ taglib prefix="sf" uri="http://www.springframework.org/tags/form" %&
&h2&Hello World!&/h2&
&sf:form method="post" modelAttribute="user" action="/toJson"&
用户名:&sf:input path="username"/&
密码:&sf:password path="password"/&
&input type="submit" value="提交"&
&/sf:form&
这里使用jstl标签库。
7 最后看一眼MainController,实现是用户到/hello 页面就跳到index .jsp 页面,在该页面注册后,。然后action动作toJson,返回id为2的用户
@Controller
public class MainController {
private IUserService service = new UserServiceImpl();
@RequestMapping(value = "/hello", method = RequestMethod.GET)
public String index( User user) {
return "index";
@RequestMapping(value ="/toJson",method=RequestMethod.POST)
@ResponseBody
public User toJson(User user){
service.addUser(user); //一起测试了
return service.findUserById(2);
整个工程的架构如图:
另外我使用mysql的可视化管理工具navicat:
最后运行截图:
Android,iOS兴趣者
前猪场员工
百战程序员_ Java1573题 QQ群:034603 掌握80%年薪20万掌握50%年薪10万 全程项目穿插, 从易到难,含17个项目视频和资料持续更新,请关注www.itbaizhan.com 国内最牛七星级团队马士兵、高淇等11位十年开发经验专...
Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgbook/spring-boot-reference-guide-zh/details带目录浏览地址:http://www.maoyupeng.com/sprin...
1. 简介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接...
Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线)。分布式系统的协调导致了样板模式, 使用Spring Cloud开发人员可以快速地支持实现这些模式的服务和应用程序。他们将在任何分布式...
一、配置maven的pom.xml加载jar包 为了后续开发的方便,将SSM框架所有需要的jar包一并加载进来 pom.xml &modelVersion&4.0.0&/modelVersion&&groupId&com.ustc.finance&/groupId& UST...
一、交际 1. Hello, … 你好。 2. Hi, … 喂,你好。 3. Good morning/ afternoon/evening. 早上/下午/晚上好。 4. How are you (this morning / afternoon / evening)? 你...
今天,上海下了入冬以来第一场雪,办公室有很大的落地窗,抬头忽见外面窗外大雪呼呼地下,心里莫名兴奋起来。同事一个个都抬头向外看,来自热带地区从未见过雪花的Z君干脆跑到窗边,认真赏起雪来。虽然这场雪下的纷纷乱乱缺乏美感,但还是点燃了大多数人的情绪,讨论起家乡的雪景来,整个办公室...
母亲因冠心病又住院了。我晚上陪床时闲来用手机搜索笑话,以解无聊。因是拼音输入,搜成了小花,一点开是老电影《小花》的主题曲,我不记得自己是否听过这首歌,可那旋律经耳机一传出,瞬间心脏像是被电击般似的,我对这歌声是那么的熟悉,它给我的童年留下了多么深刻又美好的记忆,脑中那久...
招募对象是省内普通高校和本省生源外省普通高校应届毕业生,不含定向、委培生和已落实就业单位的毕业生。其基本条件是: (1)政治素质好,热爱社会主义祖国,拥护党的基本路线和方针政策; (2)大学专科以上学历,具有工作岗位所需要的专业知识; (3)具有敬业奉献精神,遵纪守法,作风...
概述: 能够截取自动变量的匿名函数 指向函数的指针 结构体 oc对象 使用: - 声明 - 定义(变量赋值) - 调用 - 使用typedef定义Block类型 - Block作为函数参数 注意:为了简化block的声明,一般使用typedef声明block类型 - Blo...程序人生_困难下的坚持最珍贵.....
SpringCloud学习笔记006---使用properties配置文件实现多环境配置
一.前言实际项目开发过程中会用到多个环境,比如dev,test,product环境,不同的环境可能使用不同参数,为便于部署提高效率,本篇主要通过properties配置文件来实现多环境的配置。二.多环境配置实现分别创建application-dev.properties,application-test.properties,application-pro.properties配置文件,分别代表dev,test和product环境的配置文件。主配置文件application.properties中添加配置激活选项,例如激活dev环境的配置为:spring.profiles.active=dev这时application-dev.properties配置文件生效,如果主配置文件application.properties和dev配置文件application-dev.properties中有相同的配置信息,那么application-dev.properties中的生效。三.运行jar指定配置文件启动指定dev配置文件生效java
--spring.profiles.active=dev
没有更多推荐了,
(window.slotbydup=window.slotbydup || []).push({
id: '5865577',
container: s,
size: '300,250',
display: 'inlay-fix'10.8k 次阅读
代码托管于github:https://github.com/LoveIpo/spring-cloud-demo.git
项目转型,整个项目要使用现在比较热的微服务架构。老板让我整一个spring cloud 的简单demo出来,在网上很少有比较全的demo。经过几次熬夜,终于完成了spring cloud 组件部署的demo,并且能顺利运行。深夜发文,便于分享和查阅。
二、环境准备
安装STS作为spring cloud开发工具url: https://spring.io/tools/sts/all/
三、部署spring cloud 的各个组件
3.1 部署Eureka Server最先启动的是eureka-server,并且你需要在整个测试过程中保持它的启动状态,因为它是注册中心,大多数服务必须依赖于它才能实现必要的功能。
导入eureka-server的maven项目。
运行Eureka Server
如果部署成功访问Eureka server的url:http://localhost:7071/
3.2 部署微服务service-A(由于没有涉及到项目,所以简单实现参数相加)
导入service-A的maven项目。
运行service-A
如果部署成功访问service-A 的url:http://localhost:2222/add?a=111&b=113
3.3 部署微服务service-B(简单实现参数相减)
导入service-B2的maven项目。
运行service-B2
如果部署成功访问service-B的url:http://localhost:7078/sub?a=111&b=113
微服务B调用微服务A的url:http://localhost:7078/testServiceA?a=111&b=113由上面两个url可以看出端口号都是service-B的。
3.4 部署zuul(Zuul相当于是Web网站后端所有请求的前门,详细的实现可以看code)
导入zuul的maven项目。
zuul的端口号是:7073通过zuul访问服务A的url:http://localhost:7073/api-a/add?a=111&b=113。通过zuul访问服务B的url:http://localhost:7073/api-b/sub?a=111&b=113
3.5 部署ribbon(负载均衡)在这个demo中只是对服务B进行负载均衡
在部署ribbon之前,先把service-B3 部署上,步骤跟部署service-B2是一样的。主要是使得服务B生成两个实例,即service-B有两个不同的端口号。可以在eureka-server界面上看到效果。
导入ribbon的maven项目。
运行ribbon。
运行ribbon的端口是:7072.
在浏览器中通过ribbon访问服务B的url是:http://localhost:7072/sub?a=111&b=113当你刷新浏览器的时候,可以看到服务B的端口号在不停的变化,就说明ribbon 对服务B执行了负载均衡。效果如图
夜深人静。。。其他组件后续更新。有疑问可以留言。
1 收藏&&|&&7
为什么service-B2调用service-A竟然是写死的地址呢?
而不是通过服务发现来获取service-A呢
为什么service-B2调用service-A竟然是写死的地址呢?
而不是通过服务发现来获取service-A呢
你好, 你这个项目少了CONFIG server
你好, 你这个项目少了CONFIG server
分享到微博?
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。

我要回帖

更多关于 spring boot 的文章

 

随机推荐