SpringCloud学习(一)


目录:

 (1)微服务概述

(2)SpringCloud简介 

(3)EurekaServer搭建


学习目录: 

SpringCloud学习(一)_第1张图片

SpringCloud学习(一)_第2张图片 SpringCloud学习(一)_第3张图片

 (1)微服务概述

集中式架构、分布式架构、微服务架构介绍

SpringCloud学习(一)_第4张图片

    系统进化理论概述

 在系统架构与设计的实践中,经历了两个阶段,一个阶段是早些年常见的集中式系统,一个阶段是近年来流行的分布式系统;

SpringCloud学习(一)_第5张图片

SpringCloud学习(一)_第6张图片 

 SpringCloud学习(一)_第7张图片

 SpringCloud学习(一)_第8张图片

 

 

微服务架构的优缺点

1、我们知道微服务架构是将系统中的不同功能模块拆分成多个不同的服务,这些服务进行独立地开发和部署,每个服务都运行在自己的进程内,这样每个服务的更新都不会影响其他服务的运行;

2、由于每个服务是独立部署的,所以我们可以更准确地监控每个服务的资源消耗情况,进行性能容量的评估,通过压力测试,也很容易发现各个服务间的性能瓶颈所在;

3、由于每个服务都是独立开发,项目的开发也比较方便,减少代码的冲突、代码的重复,逻辑处理流程也更加清晰,让后续的维护与扩展更加容易;

4、微服务可以使用不同的编程语言进行开发;

但是在系统架构领域关于微服务架构也有一些争论,有人倾向于在系统设计与开发中采用微服务架构实现软件系统的低耦合,被认为是系统架构的未来方向,Martin Fowler(马丁.福勒)也给微服务架构很高的评价;

同时,对微服务架构也有人持反对观点,他们表示:

1、微服务架构增加了系统维护、部署的难度,导致一些功能模块或代码无法复用;

2、随着系统规模的日渐增长,微服务在一定程度上也会导致系统变得越来越复杂,增加了集成测试的复杂度;

3、随着微服务的增多,数据的一致性问题,服务之间的通信成本等都凸显了出来;

所以在系统架构时也要提醒自己:不要为了微服务而微服务。

SpringCloud学习(一)_第9张图片

服务基础开发

Spring MVC、Spring、SpringBoot

服务注册与发现

Netflix的Eureka、Apache的ZooKeeper、Nacos、Consul等

服务调用

RPC调用有阿里巴巴的Dubbo,Rest方式调用有当当网Dubbo基础上扩展的Dubbox、还有其他方式实现的Rest,比如Ribbon、Feign、Gateway、Zuul

分布式配置管理

百度的Disconf、360的QConf、淘宝的Diamond、Netflix的Archaius、Config、Bus、Nacos等

负载均衡

Ribbon、RestTemplate、Zuul、Gateway

服务熔断

Hystrix、Hystrix Dashboard、Sentinel

API网关

Zuul、Gateway

批量任务

当当网的Elastic-Job、Linkedln的Azkaban

服务跟踪

京东的Hydra、Twitter的Zipkin等

 SpringCloud学习(一)_第10张图片

(2)SpringCloud简介 

 Spring Cloud是什么

1、Spring Cloud是一个一站式的开发分布式系统的框架,为开发者提供了一系列的构建分布式系统的工具集;

2、Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(比如:配置管理,服务发现,断路器,智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等);

3、开发分布式系统都需要解决一系列共同关心的问题,而使用Spring Cloud可以快速地实现这些分布式开发共同关心的问题,并能方便地在任何分布式环境中部署与运行。

4、Spring Cloud这个一站式地分布式开发框架,被近年来流行的“微服务”架构所大力推崇,成为目前进行微服务架构的优先选择工具;

5、Spring Cloud基于Spring Boot框架构建微服务架构,学习Spring Cloud需要先学习Spring Boot;

6、SpringCloud官网:Spring | Home 

 

Spring Cloud最早是从2014年推出的,在推出的前期更新迭代速度非常快,频繁发布新版本,目前更趋于稳定,变化稍慢一些;

Spring Cloud的版本并不是传统的使用数字的方式标识,而是使用诸如:Angel、Brixton、Camden......等伦敦的地名来命名版本,版本的先后顺序使用字母表A-Z的先后来标识,,现在已经进入H版本;Hoxton.SR4版本,对应SpringBoot 2.3.0

Spring Cloud与Spring Boot版本匹配关系

Finchley

兼容Spring Boot 2.0.x,

不兼容Spring Boot 1.5.x

Edgware

兼容Spring Boot 1.5.x,

不兼容Spring Boot 2.0.x

Dalston

兼容Spring Boot 1.5.x,

不兼容Spring Boot 2.0.x

Camden

兼容Spring Boot 1.4.x,

也兼容Spring Boot 1.5.x

Brixton

兼容Spring Boot 1.3.x,

也兼容Spring Boot 1.4.x

Angel

兼容Spring Boot 1.2.x

Spring Cloud并不是从0开始开发一整套微服务解决方案,而是集成各个开源软件,构成一整套的微服务解决方案,这其中有非常著名的Netflix公司的开源产品;

Netflix公司成立于1997年,是目前美国最大的版权视频交易网站;

Netflix公司在不断发展的过程中,也成为了一家云计算公司,并积极参与开源项目,Netflix OSS(Open Source)就是由Netflix公司主持开发的一套代码框架和库,github地址:Netflix, Inc. · GitHub;

Spring Cloud 所包含的众多组件中,Spring Cloud Netflix就是其中一组不可忽视的组件,由netflix公司开发后又并入Spring Cloud 大家庭;

目前Netflix公司贡献的活跃项目包括:

spring-cloud-netflix-eureka

spring-cloud-netflix-hystrix

spring-cloud-netflix-stream

spring-cloud-netflix-archaius

spring-cloud-netflix-ribbon

spring-cloud-netflix-zuul

Spring Cloud开发环境

SpringBoot 2.2.x

Spring Cloud Hoxton xxx

Maven 3.5.3

JDK 1.8.152

IntelliJ IDEA

(3)EurekaServer搭建

 SpringCloud学习(一)_第11张图片

 

SpringCloud快速开发入门

SpringCloud学习(一)_第12张图片

SpringCloud学习(一)_第13张图片 

SpringCloud学习(一)_第14张图片 

SpringCloud学习(一)_第15张图片 

 

首先选择文件夹创建一个空项目,在创建一个Module:

SpringCloud学习(一)_第16张图片

 SpringCloud学习(一)_第17张图片

SpringCloud学习(一)_第18张图片 SpringCloud学习(一)_第19张图片

 SpringCloud学习(一)_第20张图片

编写配置文件application.yml:

#注册中心的端口
server:
  port: 6001
eureka:
  client:
    service-url:
      # 注册中心的地址
      defaultZone: http://localhost:6001/eureka
    # 注册中心无需拉取服务地址列表 默认值true
    fetch-registry: false
    #注册中心无需注册自己到节点中 默认值true
    register-with-eureka: false


 修改启动类的名字:加上Eurake注解@EnableEurekaServer

EurekaServer6001Application:

package com.bjpowernode.springcloud;

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

@EnableEurekaServer  //开启注册中心的服务器端
@SpringBootApplication
public class EurekaServer6001Application {

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

}

点击启动:

SpringCloud学习(一)_第21张图片

在浏览器输入地址:这就是服务界面

SpringCloud学习(一)_第22张图片 

 

你可能感兴趣的:(学习,java,开发语言)