博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringCloud微服务应用入门
阅读量:4045 次
发布时间:2019-05-24

本文共 6524 字,大约阅读时间需要 21 分钟。

SpringCloud微服务应用入门

微服务架构概述

单体应用架构的不足

所谓单体应用是指一个归档文件(如war文件)包含所有功能的应用,是一种应用广泛的传统项目架构,这种架构具有结构简单,部署方便的优点,当项目的规模不是很大,使用范围和并发量也都不是太大时,生产运转是比较平稳和正常的。但是,近些年随着移动互联应用的发展,项目呈现出应用场景丰富,规模、使用范围和并发量较大,单体应用架构的不足之处也越来越明显,主要有以下几方面:

  1. 复杂度高、维护困难、不易扩展、部署风险大;
  2. 项目采用的技术体系早已确定,新技术难以引入;
  3. 可靠性不高,任何一个问题都可能导致整个应用崩溃;
  4. 对高并发缺乏良好的支持。

认识微服务架构

为了解决单体应用架构的不足和问题,人们提出了微服务架构,这种微服务架构的基本思想是将一个大的应用系拆分成许多足够简单的小规模应用,每一个小应用就是一个微服务,每个微服务都独立开发和部署,与其它微服务没有直接关系,甚至每一个微服务使用的技术可以是不相同的。

微服务架构一般具有易于开发维护和部署、技术使用限制较少、可伸缩性好、可以实现高可靠高并发部署、并具有负载均衡能力等特点。

微服务架构的主要构成

一般微服务架构会包含以下组件。

  1. 服务发现组件:负责注册和查找服务组件;
  2. 若干服务组件
  3. 服务网关:负责接收和响应客户端请求,并提供服务路由;
  4. 负载均衡器;

搭建SpringCloud微服务应用

在阅读本内容前,假设您已熟悉和掌握springboot方面知识和技能

开发eureka服务器(即服务发现组件)

  1. 创建maven项目(选择jar包)

  2. 在pom.xml中添加如下配置

    1.8
    Hoxton.RELEASE
    org.springframework.boot
    spring-boot-starter-parent
    2.2.1.RELEASE
    org.springframework.boot
    spring-boot-devtools
    runtime
    true
    org.springframework.cloud
    spring-cloud-starter-netflix-eureka-server
    org.springframework.cloud
    spring-cloud-dependencies
    ${spring-cloud.version}
    pom
    import
    org.springframework.boot
    spring-boot-maven-plugin
  3. 在application.yaml中配置如下

    server:  port: 8761eureka:  client:    register-with-eureka: false #当有多个eureka实例进行高可靠部署时,这里应当配置为true,即当前eureka实例做为其它eureka实例的客户端,并在其它eureka上注册    fetch-registry: false #当有多个eureka实例进行高可靠部署时,这里应当配置为true,即当前eureka实例从其它euraka上获同步获取注册信息    service-url:      defaultZone: http://localhost:8761/eureka/ #设置eureka服务器的访问地址,在浏览器上访问eureka时地址栏上应当输入http://localhost:8761
  4. 开发主启动类

    SpringBootApplication@EnableEurekaServer //此注解说明本应用为eureka服务器public class EurekaApplication {
    public static void main(String[] args) {
    SpringApplication.run(EurekaApplication.class, args); }}
  5. 启动应用,在浏览器上访问http://localhost:8761,测试。

开发服务组件

服务组件根据项目需要可以开发多个,所有的服务组件都应当作为eureka客户端在eureka上进行注册。这里以一个服务组件作为示例。

  1. 创建maven项目(选择jar包)

  2. 在pom.xml中添加如下配置

    1.8
    Hoxton.RELEASE
    org.springframework.boot
    spring-boot-starter-parent
    2.2.1.RELEASE
    org.springframework.boot
    spring-boot-devtools
    runtime
    true
    org.springframework.boot
    spring-boot-starter-web
    org.springframework.cloud
    spring-cloud-starter-netflix-eureka-client
    org.springframework.cloud
    spring-cloud-dependencies
    ${spring-cloud.version}
    pom
    import
    org.springframework.boot
    spring-boot-maven-plugin
  3. 在application.yaml中配置如下

    server:  port: 8081	    logging:  level:    root: info    web: tracespring:  application:    name: my-service #注册在eureka上的服务名eureka:  client:    service-url:      defaultZone: http://localhost:8761/eureka/ #配置注册访问eureka到标准  instance:    prefer-ip-address: true #将客户端ip地址注册到eureka上,而默认将客户端主机明注册到eureka上
  4. 开发主启动类

    @SpringBootApplicationpublic class MyServiceApplication {
    public static void main(String[] args) {
    SpringApplication.run(MyServiceApplication.class, args); }}
  5. 开发控制器

    @RestControllerpublic class MyServiceController {
    @RequestMapping("/s1") public String s1() {
    return "我是服务One!"; } @RequestMapping("/s2") public Map
    s2() {
    Map
    map = new HashMap
    (); map.put("id", "001"); map.put("name", "名称"); map.put("salary", 8800); return map; }}
  6. 测试

    启动应用,通过浏览器访问eureka,观察标题Instances currently registered with Eureka下到服务实例列表,是否存在MY-SERVICE,若存在说明注册成功。
    接下来,在浏览器上通过地址http://localhost:8081/s1 或者 http://localhost:8081/s2 访问服务是否可以获取数据。

开发zuul(网关组件)

网关组件运行后,所有的请求不必直接访问服务组件,而是可以通过网关代理,网关将做为客户端与服务端到统一交互界面。

网关也是一个eureka到客户端组件,亦需在服务器上注册。

  1. 创建maven项目(选择jar包)

  2. 在pom.xml中添加如下配置

    1.8
    Hoxton.RELEASE
    org.springframework.boot
    spring-boot-starter-parent
    2.2.1.RELEASE
    org.springframework.boot
    spring-boot-devtools
    runtime
    true
    org.springframework.cloud
    spring-cloud-starter-netflix-zuul
    org.springframework.cloud
    spring-cloud-starter-netflix-eureka-client
    org.springframework.cloud
    spring-cloud-dependencies
    ${spring-cloud.version}
    pom
    import
    org.springframework.boot
    spring-boot-maven-plugin
  3. 在application.yaml中配置如下

    server:  port: 9999    logging:  level:    root: infospring:  application:    name: my-zuuleureka:  client:    service-url:      defaultZone: http://localhost:8761/eureka/
  4. 开发主启动类

    @SpringBootApplication@EnableZuulProxy //声明一个zuul代理(网关)public class ZuulApplication {
    public static void main(String[] args) {
    SpringApplication.run(ZuulApplication.class, args); }}
  5. 启动网关组件,进行测试

    访问服务的路由规则为:http://<zuul主机地址>:<zuul端口号>/在eureka上注册到服务名/**
    示例:http://localhost:9999/my-service/s1

案例源码地址

转载地址:http://tnhdi.baihongyu.com/

你可能感兴趣的文章
NodeJS 基于redis的分布式锁的实现(Redlock算法)
查看>>
用Redis构建分布式锁
查看>>
Redis官方分布式锁的实现-Redlock实现原理
查看>>
npm 是node.js提供的包管理工具
查看>>
Redis 越来越慢?常见延迟问题定位与分析
查看>>
枚举用法详解
查看>>
枚举用法详解
查看>>
设计模式常见面试题
查看>>
curl
查看>>
hibernateTemplate常用方法
查看>>
windows下查看端口监听情况
查看>>
windows下mongodb安装
查看>>
win7下安装mongodb
查看>>
mongodb使用笔记
查看>>
ZeroMQ研究与应用分析
查看>>
mongodb--nodejs
查看>>
linux vi 操作笔记
查看>>
使用TortoiseGit对Git版本进行分支操作
查看>>
Linux tcpdump命令详解
查看>>
mysql日期格式化
查看>>