当前位置: 首页 > news >正文

SpringCloud学习(一)


目录:

 (1)微服务概述

(2)SpringCloud简介 

(3)EurekaServer搭建


学习目录: 

 

 (1)微服务概述

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

    系统进化理论概述

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

 

 

 

 

 

微服务架构的优缺点

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

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

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

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

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

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

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

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

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

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

服务基础开发

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等

 

(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快速开发入门

 

 

 

 

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

 

 

 

编写配置文件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);
    }

}

点击启动:

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

 

 

相关文章:

  • 还是 “月饼” 后续,玩转炫彩 “月饼” 之 问题说明(送开发板)
  • 软考高级-系统架构师-操作系统
  • 测试计划包括哪些内容?
  • 淘宝Tmall,拼多多,1688等API接口示例请求,获取页面商品详情等数据
  • vue-cli 组件
  • 从0开始安装虚拟机VMware和安装Linux系统(详细步骤)
  • 2022年第五空间网络安全大赛WriteUp
  • Git操作
  • 15天深度复习JavaWeb的详细笔记(十)——Filter、Listener、Ajax
  • 30.0、C语言——文件操作 (1)
  • 物联网感知安全——你了解多少?
  • Linux【编写一个简单的shell】
  • Python入门到进阶——流程控制
  • 基于Docker的开源端到端开发者平台
  • Chapter2.2:控制系统的数学模型
  • 网络传输文件的问题
  • 【347天】每日项目总结系列085(2018.01.18)
  • 2018一半小结一波
  • AngularJS指令开发(1)——参数详解
  • css属性的继承、初识值、计算值、当前值、应用值
  • JavaScript的使用你知道几种?(上)
  • JS题目及答案整理
  • mockjs让前端开发独立于后端
  • MySQL-事务管理(基础)
  • Nacos系列:Nacos的Java SDK使用
  • PHP面试之三:MySQL数据库
  • Python - 闭包Closure
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • Terraform入门 - 1. 安装Terraform
  • text-decoration与color属性
  • vue.js框架原理浅析
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 基于axios的vue插件,让http请求更简单
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 区块链将重新定义世界
  • 算法---两个栈实现一个队列
  • 在weex里面使用chart图表
  • 正则表达式
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • AI算硅基生命吗,为什么?
  • 我们雇佣了一只大猴子...
  • #android不同版本废弃api,新api。
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • (0)Nginx 功能特性
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (层次遍历)104. 二叉树的最大深度
  • (四) 虚拟摄像头vivi体验
  • (转)一些感悟
  • (转载)Linux 多线程条件变量同步
  • .NET CLR Hosting 简介