简谈SpringCloud的入门配置(二)

入门实例的四步骤:

1)配置Eureka服务器

在Spring官网上新建一个SpringCloud项目

增加Eurake组件

将其中的pom.xml文件拷贝至eclipse新建的Maven文件中

由于SpringCloud是基于SpringBoot的,先创建一个启动类Application

package cn.lch;

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

@SpringBootApplication
@EnableEurekaServer //启动Eurake服务
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

创建配置文件application.properties

#1.配置端口
server.port=5121
#2.配置eureka主机名,找到eureka所在的机器
eureka.instance.hostname=localhost
#3.是否将自身注册为服务 false表示不注册
eureka.client.register-with-eureka=false
#4.是否主动发现服务  false表示不发现
eureka.client.fetch-registry=false
#5.对外提供的注册入口
eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/

启动程序,通过url:http://localhost:5121进行访问

2)创建一个注册服务实例

在spring官网上新建一个SpringCloud项目

增加web和cloud discovery组件

将其中的pom.xml文件拷贝至eclipse新建的Maven文件中

编写程序启动类Application

package cn.lch;

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

@SpringBootApplication
@EnableEurekaClient
public class Application {

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

}

编写配置文件application.properties

#指定实例端口
server.port=8080
#指定实例名,springcloud是通过实例名称来寻址服务的
spring.application.name=instanceServer
#指定Eureka服务端访问路径
eureka.client.service-url.defaultZone=http://localhost:5121/eureka

编写一个Controller类

package cn.lch.controller;

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

@RestController
public class UserController {

    @RequestMapping("/say")
    public String say() {

        return "Hello,SpringCloud";
    }

}

启动实例(在启动前启动Eurake服务端)

3)调用服务

将上述实例1复制一份,并修改项目名

修改appplication.properties配置文件

#指定实例端口
server.port=8081
#指定实例名,springcloud是通过实例名称来寻址服务的
spring.application.name=instanceClient
#指定Eureka服务端访问路径
eureka.client.service-url.defaultZone=http://localhost:5121/eureka

修改启动类Application注解

package cn.lch;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@SpringBootApplication
@EnableDiscoveryClient //标记该项目为一个,该实例是一个发现服务的实例
public class Application {

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

同时启动Eurake服务端,和实例1和实例2,进行测试

4)实现客户端与服务端的远程调用

在instanceServer中发布一个login方法的restful接口给instanceClient调用该接口

在SpringCloud中远程调用的方法有两种:

  1.Ribbon+RestTemplate,基于restful实现。

  2.Feign(默认启动Ribbon负载均衡)

本篇讲述的是第一种方式的实现,第二种方式可看第三章的讲解

修改注册服务,新建User类

package cn.lch.pojo;

import java.io.Serializable;

public class User implements Serializable{

    /**
     *
     */
    private static final long serialVersionUID = 7260598142983180828L;

    private Integer id;

    private String username;

    private String password;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

}

修改Controller,增加一个login方法

package cn.lch.controller;

import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import cn.lch.pojo.User;

@RestController
public class UserController {
    /**
     * 用户登录
     * @return
     */
    @RequestMapping(value="/login",method=RequestMethod.POST)
    public String login(@RequestBody User user){
        System.out.println("用户名:"+user.getUsername()+",密码:"+user.getPassword());
        return "Ok—intanceServer--8080";
    }
}

修改客户端实例

增加Ribbon依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-ribbon</artifactId>
</dependency>

修改启动类Application,标记该实例是发现服务实例

package cn.lch;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@SpringBootApplication
@EnableDiscoveryClient//2.用于标识该项目是一个Eureka客户端(发现服务)
public class Application {

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

  //2.创建RestTemplate实例对象,用来远程调用服务
    @Bean
    @LoadBalanced
    public RestTemplate restTemplate(){

        return new RestTemplate();
    }
}

创建UserService类

package cn.lch.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;

import cn.lch.pojo.User;

@Service
public class UserService {

    @Autowired
    private RestTemplate restTemplate;

    public String login(User user){
        String result = restTemplate.postForObject("http://instanceServer/login",user, String.class);

        return result;
    }
}

依次启动注册中心、服务提供实例、服务发现实例

远程调用成功

基于ribbon实现负载均衡

复制一份instanceserver,并修改maven坐标和配置文件中的端口

修改Controller中的返回信息

依次启动Eurake注册中心,instanceServer1,instanceServer2和instanceClient,多次访问登陆接口,查看结果

第一次调用

第二次调用

原文地址:https://www.cnblogs.com/lch-Hao/p/11069916.html

时间: 2024-10-01 06:07:35

简谈SpringCloud的入门配置(二)的相关文章

简谈SpringCloud学习(一)

一.SOA架构(Service-Oriented Architecture) 面向服务的架构,是一种程序架构的思想,它将不同功能的服务单元作为一个独立的程序运行.一个SOA架构的程序就是由多个服务(不同功能的服务单元)组成的 因为SOA架构的思想是用于实现程序的分布式,因此也可以将SOA架构思想理解分为分布式思想 架构图: 二.SpringCloud的引入 SOA架构存在的问题: 1)无法检查服务的健康状态 2)无法对服务进行管理 解决方案:使用SpringCloud框架中的Eureka(注册中

客户端GUI测试技术和自动化测试架构设计简谈

客户端自动化特点 客户端的自动化,通常做过的人都不是很愿意深入讨论.因为除了功能和逻辑之外,不得不面对各种界面变化,各种和环境交互,各种兼容问题以及想不到灰色地带,就算这样,也找不到太多有效的bug.然而即便如此,客户端的自动化必须去做,尤其是GUI的.它的自动化特点是: 复杂 成本高 不容易发现问题 技术要求高 架构很难通用 下面,从一些基本的东西开始一点点的讨论客户端GUI测试的一些问题和处理办法,以及自动化架构设计的一些思路.事实上就像上面说的,GUI的测试并不是为了发现bug,而是回归的

Spring Cloud 入门教程(二): 配置管理

使用Config Server,您可以在所有环境中管理应用程序的外部属性.客户端和服务器上的概念映射与Spring Environment和PropertySource抽象相同,因此它们与Spring应用程序非常契合,但可以与任何以任何语言运行的应用程序一起使用.随着应用程序通过从开发人员到测试和生产的部署流程,您可以管理这些环境之间的配置,并确定应用程序具有迁移时需要运行的一切.服务器存储后端的默认实现使用git,因此它轻松支持标签版本的配置环境,以及可以访问用于管理内容的各种工具.很容易添加

简谈【自动化协议逆向工程技术的当前趋势】

声明: 1)本文由我bitpeach原创撰写,禁止一切形式的转载.如有转载,侵权必究. 2)本简谈主要分为三个方面,第一是自动化协议逆向技术的基本理论,第二是当前发展趋势,第三是入门协议逆向技术的必备过程. 3)既是简谈,则文章篇幅不长,同时本文观点不一定正确,希望抛砖引玉,能得高人指点,幸为殊荣. 4)最近一个月比较忙,昨天正好写完稿子,今天就简写一些内容,避免重复,故为简谈. (一)协议逆向工程理论基础 1.1 什么是协议逆向技术 协议逆向工程是指在不依赖于协议描述的情况下,通过对协议实体的

微服务SpringCloud+Docker入门到高级实战

第一章 课程介绍和学习路线 1.微服务架构SpringCloud课程介绍简介:课程介绍和课程大纲讲解,讲课风格和重点内容理解技巧2.技术选型和学后水平简介:课程所需基础和技术选型讲解,学完课程可以到达怎样的程度, 第二章 架构演进和分布式系统基础知识 1.传统架构演进到分布式架构简介:讲解单机应用和分布式应用架构演进基础知识 (画图)2.微服务核心基础讲解简介:讲解微服务核心知识 :网关.服务发现注册.配置中心.链路追踪.负载均衡器.熔断3.常见的微服务框架简介:讲解常用的微服务框架4.微服务下

SpringCloud从入门到进阶(四)——使用SpringBoot搭建微服务

内容 SpringBoot整合SpringCloud的Eureka.Zuul等组件,快速实现简单易懂且具有服务熔断.负载均衡的分布式架构1.0,体验微服务的魅力. 版本 IDE:IDEA 2017.2.2 x64 JDK:1.8.0_171 manve:3.3.3 SpringBoot:1.5.9.RELEASE SpringCloud:Dalston.SR1 适合人群 ?Java开发人员 说明 转载请说明出处:SpringCloud从入门到进阶(四)--使用SpringBoot搭建微服务 参考

SpringCloud从入门到进阶(三)——路由接入Zuul

内容 SpringBoot整合SpringCloud的Eureka.Zuul等组件,快速实现简单易懂且具有服务熔断.负载均衡的分布式架构1.0,体验微服务的魅力. 版本 IDE:IDEA 2017.2.2 x64 JDK:1.8.0_171 manve:3.3.3 SpringBoot:1.5.9.RELEASE SpringCloud:Dalston.SR1 适合人群 ?Java开发人员 说明 转载请说明出处:SpringCloud从入门到进阶(三)--路由接入Zuul 参考 Linux入门实

SpringCloud从入门到进阶(四)——生产环境下Eureka的完全分布式部署

内容 由于前两节的内容我们知道,开启了preferIpAddress后,Eureka的伪分布式部署会提示replica不可用.这一节我们讲解如何在生产环境下部署完全分布式的Eureka集群,确保开启了preferIpAddress后replica的可用性. 版本 IDE:IDEA 2017.2.2 x64 JDK:1.8.0_171 manve:3.3.3 SpringBoot:1.5.9.RELEASE SpringCloud:Dalston.SR1 适合人群 Java开发人员 节点信息: 节

[WebGL入门]十二,模型数据和顶点属性

注:文章译自http://wgld.org/,原作者杉本雅広(doxas),文章中如果有我的额外说明,我会加上[lufy:],另外,鄙人webgl研究还不够深入,一些专业词语,如果翻译有误,欢迎大家指正. 顶点属性的意思 上次的文章中,介绍了一下从着色器的生成,编译,到程序对象的生成和着色器的连接.这次,简单的说一下模型数据的定义和顶点属性的处理.另外,介绍一下根据模型数据生成VBO的方法.VBO的使用要比生成难理解一些,但是不要担心,后面会慢慢说明.接下来看一下顶点属性.顶点属性,说的简单点,