springcloud搭建(一)


SpirngCloud搭建Eureka

1. 创建新项目

1.1新建一个maven项目

1.2 输入groupid:com.hewow和artifactid:springcloud-erreka

 

1.3然后finish

1.4新建项目的目录结构如下,其中src文件夹我们用不上,可以选择删除

2.搭建注册中心

2.1新建一个module项目,在maven项目下右键,新建module,选择Spring Initializr,并命名为server-center,如下图所示:

2.2后面依然是填写GroupId和ArtifactId,后续选择如下图:

勾选spring cloud discovery--eureka server然后nextfinish

 

第一次创建spring-cloud-eureka项目需要下载一些jar包,时间稍长,等待即可

 

2.3创建完成后修改配置

创建模块结束之后,修改applications.properties

#eureka注册中心
#端口号
server.port=8761

eureka.instance.hostname=localhost
#表示十分将自己注册到Eureka Server,默认为true。由于当前应用就是Eureka Server,故而设为false。
eureka.client.register-with-eureka=false
#表示是否从Eureka Server获取注册信息,默认为true。因为这是一个单点的Eureka Server,不需要同步其他 的Eureka Server节点的数据,故而设为false
eureka.client.fetch-registry=false
#置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址,默认是http://localhost:8761/eureka;多个地址可用,分隔
eureka.client.service-url.default-zone=http://${eureka.instance.hostname}:${server.port}/eureka/

修改SpringCloudEurekaApplication类文件为下:

package com.buou.springcloudeureka;

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

@EnableEurekaServer
@SpringBootApplication
public class SpringCloudEurekaApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringCloudEurekaApplication.class, args);
    }

}

其中@EnableEurekaServer是声明这是一个Eureka注册中心

 

2.4至此,关于一个EurekaServer的注册中心配置已经完成,启动该Application,可以在控制台看到日志信息,同时,可以在浏览器输入“127.0.0.1:8761”,出现如下界面:

看到上图所示即代表启动成功,可以看到“No instances available”,因为还没有创建服务提供者。

3.搭建服务提供-order

3.1.新建module server-order”

这里考虑到后续会添加很多服务,因此使用order后缀区别,当然用户可以自定义其他的名字。创建的过程和上述创建是一致的,这里不再赘述。

 

3.2.修改配置applications.properties

添加如下内容:


#eureka-client
#端口号
server.port=8082

eureka.instance.hostname=localhost
#置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址,默认是http://localhost:8761/eureka;多个地址可用,分隔
eureka.client.service-url.default-zone=http://localhost:8761/eureka/

spring.application.name=service-order

Spring.application.name代表这个服务提供者的名字,用来区分其他服务;

eureka.client.service-url.default-zone是服务中心的地址

3.3.修改ServerOrderApplication类

添加@EnableEurekaClient注解

package com.hewow.serverorder;

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

@EnableEurekaClient
@SpringBootApplication
public class ServerOrderApplication {

    public static void main(String[] args) {
        SpringApplication.run(ServerOrderApplication.class, args);
    }

}

 

注册中心和服务提供者的区别就在于注解的不同。

 

3.4.新建一个Controller类

首先在ServerOrderApplication同级目录下新建一个包“controller”,controller包下面建立一个OrderController类OrderController类的内容如下:

package com.hewow.serverorder.controller;

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

@RestController
public class OrderController {

    @RequestMapping("getOrder")
    @GetMapping
    public String getOrder(){
        return "order-001";
    }

}

 

3.5.测试服务是否可用

测试server-order(前提是注册中心已启动),首先启动服务后,在这册中心看到注册了一个服务,如下图:

在浏览器输入127.0.0.1:8082/getOrder”直接访问该服务,显示信息如下图所示:

服务提供创建完成。

4.搭建服务消费-user

上述过程实现了从浏览器直接访问一个服务的过程,但如何通过一个微服务访问另外一个微服务呢?下面创建一个服务消费者以调用刚才的微服务。

4.1.新建module模块,命名为“server-user”,过程同上

4.2修改配置文件application.propeties



#eureka-client
#端口号
server.port=8083

eureka.instance.hostname=localhost
#置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址,默认是http://localhost:8761/eureka;多个地址可用,分隔
eureka.client.service-url.default-zone=http://localhost:8761/eureka/

spring.application.name=service-user

虽然是服务消费者,但其本身也是一个服务提供者,因此需要在服务注册中心注册。可以看到这里更换了一个端口号,同时更改了服务的名字,若新建其他服务可类似更改

4.3.修改ServerUserApplication

package com.hewow.serveruser;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@EnableEurekaClient
@SpringBootApplication
public class ServerUserApplication {

    @Bean //注入restTemplate
    @LoadBalanced //在注册中心里进行查找微服务,Ribbon负载均衡
                    //生成一个RestTemplate实例对象
                    //使用user服务调用order服务就是通过这个restTemplate对象实现的
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }

    public static void main(String[] args) {
        SpringApplication.run(ServerUserApplication.class, args);
    }

}

 

 

同样这里要添加注解@EnableEurekaClient表明自己是Eureka-Client的身份;这里注入了一个resttemplate用来进行后续的服务调用。

 

4.4.添加UserController

同理,新建包并新建UserController类,内容如下

package com.buou.springcloudclientuser.com.buou.user.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
public class UserController {

    @Autowired
    private RestTemplate restTemplate;

    @RequestMapping("getUserOrder")
    public String getUserOrder(){
        String url="http://service-order/getOrder";
        //返回值类型和我们的业务返回值一致
        return restTemplate.getForObject(url, String.class);
    }
}

 

4.5.测试该服务

启动该服务,刷新注册中心,可以看到多了一个服务:

 

在浏览器中输入“127.0.0.1:8083/getUserOrder”,出现界面如下:

可以发现成功调用了order服务并返回了结果,实现了server-user服务调用server-order服务的操作。服务消费者本身又是服务提供者。

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM