简单明了的SpringCloud,你值得拥有

微服务

定义

微服务是一种架构风格:没有强制性,没有绝对标准,并不是具体的某一个框架或组件

就是把一个单体项目,拆分为多个微服务,每个微服务可以独立技术选型,独立开发,独立部署,独立运维.并且多个服务相互协调,相互配合,最终完成用户的价值

微服务的作用

在以往的IT行业大多都是各种独立系统的堆砌,这些系统就存在一个问题可拓展性差,维护成本高等问题,到后面引入了SOA服务化,虽然它可以解决之前的那些 问题,但是由于成本太高成了企业的奢侈品,所以引入了微服务

微服务的优点和缺点

优点

易于开发和维护

​ 由于微服务单个模块就相当于一个项目,开发这个模块我们就只需关心这个模块的逻辑即可,代码量和逻辑复杂度都会降低,从而易于开发和维护。

启动较快

这是相对单个微服务来讲的,相比于启动单体架构的整个项目,启动某个模块的服务速度明显是要快很多的。

局部修改容易部署

​ 在开发中发现了一个问题,如果是单体架构的话,我们就需要重新发布并启动整个项目,非常耗时间,但是微服务则不同,哪个模块出现了bug我们只需要解

​ 个模块的bug就可以了,解决完bug之后,我们只需要重启这个模块的服务即可,部署相对简单,不必重启整个项目从而大大节约时间。

技术栈不受限

​ 比如订单微服务和电影微服务原来都是用java写的,现在我们想把电影微服务改成nodeJs技术,这是完全可以的,而且由于所关注的只是电影的逻辑而已,因 此技术更换的成本也就会少很多。

按需伸缩

​ 我们上面说了单体架构在想扩展某个模块的性能时不得不考虑到其它模块的性能会不会受影响,对于我们微服务来讲,完全不是问题,电影模块通过什么方式 来提升性能不必考虑其它模块的情况。

缺点

运维要求较高

​ 对于单体架构来讲,我们只需要维护好这一个项目就可以了,但是对于微服务架构来讲,由于项目是由多个微服务构成的,每个模块出现问题都会造成整个项 目运行出现异常,想要知道是哪个模块造成的问题往往是不容易的,因为我们无法一步一步通过debug的方式来跟踪,这就对运维人员提出了很高的要求。

分布式的复杂性

​ 对于单体架构来讲,我们可以不使用分布式,但是对于微服务架构来说,分布式几乎是必会用的技术,由于分布式本身的复杂性,导致微服务架构也变得复杂 起来。

接口调整成本高

​ 比如,用户微服务是要被订单微服务和电影微服务所调用的,一旦用户微服务的接口发生大的变动,那么所有依赖它的微服务都要做相应的调整,由于微服务 可能非常多,那么调整接口所造成的成本将会明显提高。

重复劳动

​ 对于单体架构来讲,如果某段业务被多个模块所共同使用,我们便可以抽象成一个工具类,被所有模块直接调用,但是微服务却无法这样做,因为这个微服务 的工具类是不能被其它微服务所直接调用的,从而我们便不得不在每个微服务上都建这么一个工具类,从而导致代码的重复。

主流微服务框架

  1. Spring Cloud:http://projects.spring.io/spring-cloud(现在非常流行的微服务架构)
  2. Dubbo:http://dubbo.io
  3. Dropwizard:http://www.dropwizard.io (关注单个微服务的开发)
  4. Consul、etcd&etc.(微服务的模块)

SpringCloud简介

Spring Cloud是一个基于Spring Boot实现的微服务架构开发工具。它为微服务架构中
涉及的配置管理、服务治理、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、
分布式会话和集群状态管理等操作提供了一种简单的开发方式。

springCloud的特点

  • 约定优于配置
  • 适用于各种环境。开发、部署在PC Server或各种云环境(例如阿里云、AWS等)
    均可。
  • 隐藏了组件的复杂性,并提供声明式、无xml的配置方式。
  • 开箱即用,快速启动。
  • 轻量级的组件。Spring Cloud整合的组件大多比较轻量。例如Eureka、Zuul, 等等,
    都是各自领域轻量级的实现。
  • 组件丰富,功能齐全。Spring Cloud为微服务架构提供了非常完整的支持。例如,配
    置管理、服务发现、断路器、微服务网关等。
  • 选型中立、丰富。例如,Spring Cloud支持使用Eureka、Zookeeper或Consul实现服
    务发现。
  • 灵活。Spring Cloud的组成部分是解耦的,开发人员可按需灵活挑选技术选型。

SpringCloud组件

  1. Eureka 服务注册中心
  2. 服务消费者 Rest 和 Fegin --消费实现负载均衡ribbon
  3. 接口网关Zuul
  4. Hystrix 关于服务雪崩的解决方案–服务熔断、服务降级、隔离资源。

SpringCloud-Eureka注册中心

Eureka是netflix的一个子模块,也是核心模块之一,Eureka是一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移
服务注册与发现对于微服务架构来说是非常重要的,有了服务发现和注册,只需要使用服务的标识符,就可以访问到服务,而不需要修改服务,而不需要修改服务调用的配置文件了,如果要查看会员的订单详情,那么就要在会员系统的tomcat里面调用订单系统的tomcat里的方法。那么直接通过接口访问吗?显然这是不安全的。因此我们需要一个统一管理远程RPC调用的注册中心

编写Eureka Server

第一步:创建Maven工程:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5XhATXXo-1591148199645)(C:\Users\13047\Pictures\2018110322435781.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FEHptgOT-1591148199652)(在这里插入图片描述
在这里插入图片描述

第二步:配置pom:

    <dependencies>
        <!--注册中心-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
    </dependencies>

第二步:配置application.properties

    #服务端口
    server.port=8220
    # 环境设置:dev、test、prod
    spring.profiles.active=dev
    # 服务地址
    eureka.instance.hostname=localhost
    #Eureka客户端与Eureka服务端进行通信的地址
    eureka.client.serviceUrl.defaultZone= http://${eureka.instance.hostname}:${server.port}/eureka/
    #是否将自己注册到Eureka服务器中,本身是服务器,无需注册
    eureka.client.registerWithEureka=false
    # 是否需要拉取服务信息
    eureka.client.fetchRegistry=false 
    # 设置日志级别
    logging.level.root=WARN

第二步:创建启动类
在启动类上添加注解@EnableEurekaServer


    @SpringBootApplication
    @EnableEurekaServer
    public class EurekaServerApplication {
        public static void main(String[] args) {
            SpringApplication.run(EurekaServerApplication.class);
        }
    }

在这里插入图片描述

同样创建一个SpringBoot项目,创建方式和导包方式和注册中心一样

    eureka:
      client:
        serviceUrl:
          defaultZone: http://localhost:8220/eureka/
    server:
      #  此项目端口号
      port: 8889
    spring:
      application:
        #    注册进eureka的名字
        name: order-server

	

启动类

    @EnableEurekaClient
    @SpringBootApplication
    public class Demo1Application {
        public static void main(String[] args) {
            SpringApplication.run(Demo1Application.class, args);
        }

    }
	

再次运行
在这里插入图片描述
再次打开注册中心网页,就发现已经注册进去

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值