SpringCloud(待完善)


前言

提示:以下是本篇文章正文内容,下面案例可供参考

一、微服务架构概述

什么是微服务架构

到目前为止,微服务并没有一个统一的标准的定义。简单的说,微服务是系统架构上的一种设计风格,它的主旨是将一个原本独立的系统拆分成多个小型服务,这些小型服务都在格子独立的进程中运行,服务之间通过基于 HTTP 的 RESTful API 通信协作。

被拆分后的每一个小型服务都围绕着系统中的某一项业务功能进行构建,并且每个服务都是一个独立的项目,可以进行独立的测试、开发和部署等。

由于各个独立的服务之间使用的是基于 HTTP 的 JSON 作为数据通信协作的基础,所以这些微服务可以使用不同的语言来开发。

微服务架构的优缺点

  • 优点
  1. 微服务架构是将系统中不同功能模块分成多个不同的服务,这些服务进行独立的开发和部署,每个服务都在自己的进程内,这样每个服务的更新都不会影响到其他服务的运行
  2. 由于每个服务都是独立开发的,项目的开发也比较方便,减少代码的冲突、重复,逻辑处理流程更加清晰,让后续的维护和扩展更加容易。
  3. 由于每个服务都是独立部署的,所以我们可以更准确的监控每个服务的资源消耗情况,进行性能容量的评估。通过压力测试,也很容易发现各个服务之间的性能瓶颈所在。
  4. 由于各个独立的服务之间使用的是基于 HTTP 的 JSON 作为数据通信协作的基础,所以这些微服务可以使用不同的语言来开发。
  • 缺点
  1. 微服务架构增加了系统维护、部署的难度,导致一些功能模块或者代码无法复用。
  2. 随着系统规模日渐增长,微服务在一定程度上也会导致系统变得越来越复杂,增加了集成测试的复杂度。
  3. 随着微服务的争夺,数据的一致性问题,服务之间的通信成本等都凸显出来

为什么选择SpringCloud构建微服务

首先微服务架构讨论非常的火热,无数的架构师和开发者在实际项目中实践者微服务架构的设计理念,在微服务的架构中针对不同的应用场景出现的各种问题,也推出了很多解决方案和开源框架,其中国内的互联网企业也有一些著名的框架和方案

应用场景微服务中的技术框架和方案
服务基础开发Spring、SpringMVC、SpringBoot
服务的注册于发现Netflix的Eureka、Apache的Zookeeper
服务调用RPC方式调用有阿里的Dubbo;Rest方式调用有当当网Dubbox;还有其他Rest方式调用Ribbon、Fegin
分布式配置管理百度的Disconfig、360的QConfig、淘宝的Diamond、NetFlix的Archaius
负载均衡Ribbon
服务熔断Hystrix
API网关Zuul
批量任务当当网的Elastic-Job、Linkedln的Azkaban
服务跟踪京东的Hydra、推特的Zipkin等

通过上面对比可以得出。在微服务架构中,几乎大部分的开源项目和组件都只能解决某一个场景下的问题,所以这些这些事实微服务加购的公司也整合来自不同公司和组织的诸多开源框架,并针对自身业务进行一些改进,但是并没有一个统一的架构方案。

同时在准备微服务架构时,整合各个公司和组织的开源框架过程中,又有很多可替代的开源的框架可以选择,导致在技术选型的初期,需要花费大量的时间和成本进行项目的预研(预研是对预算研发或预备研发的简称)、分析和试验,这些方案的整合没有得到充分的测试,可能在实践中遇到各种各样的问题。

这个时候SpringCloud横空出世了,可以说是为微服务架构迎来一束曙光,有SpringCloud社区的强大支持和保障,让微服务架构变得异常简单起来,它不像之前列举的框架那样,只是解决微服务中某一个问题,而是解决微服务架构实施的综合性解决框架,它整合诸多被广泛实践和证明的有效的框架作为实施的基础组件,又在该体系的基础上创建了一些非常优秀的边缘组件将他们很好的整合起来。同时SpringCloud有Spring强大的技术背景、极高的社区活跃度。所以SpringCloud是一个非常标准的微服务技术解决方案。

二、SpringCloud - 初识

  1. SpringCloud是一个一站式的开发分布式系统的框架,并为开发者提供了一系列的构建分布式系统的工具集
  2. SpringCloud为开发人员提供了快速构建分布式系统中一些常见模式的工具,比如:配置管理、服务无发现、断路器、只能路由、微代理、控制总线、全局锁、决策竞争、分布式会话和集群状态管理
  3. 分布式系统都需要解决一系列共同关心的问题,而使用SpringCloud可以快速的实现这些分布式开发功能关心的问题,并能方便的在任何分布式环境中部署和运行

三、SpringCloud - 快速开发入门

四、SpringCloud - 服务注册中心 Eureka

五、SpringCloud - 客户端负载均衡 Ribbon

六、SpringCloud - 服务熔断 Hystrix

熔断

在分布式的环境或者微服务中,不可避免的会出现一些错误,一个服务的失败或许会导致整个项目的失败。而Hystrix是一个库,它可以通过添加容错逻辑来保护或者控制你的分布式服务之间的交互。Hystrix通过隔离服务之间的访问点,阻止它们之间的级联故障以及提供后备选项来实现这一目标,所有这些都可以提高系统的整体弹性。

主要功能

服务熔断

在微服务架构中,是将一个单体应用拆分成多个服务单元,各个服务单元之间通过注册中心彼此发现和消费对方提供的服务,每个服务单元都是单独部署,在格子的服务进程中运行,服务之间通过远程调用实现信息的交互,那么当某个服务响应过慢或者故障,又或者因为网络波动或者故障,则会造成调用者延迟或调用失败,当大量请求到达,则会造成请求堆积,导致调用者线程挂起,从而引发调用者也无法响应,调用者也发生故障,最终导致整个系统的瘫痪。为此引入熔断保护机制Hystrix。
比如电商中的用户下单,有两个服务,一个下订单服务,一个减库存服务,当用户下订单时调用下单服务,然后下订单服务又调用减库存服务,如果减库存服务响应延迟或者没有响应,则会造成下订单服务的线程挂起等待,如果大量用户下订单或者大量的请求堆积,引起下订单服务也不可用,如果还有另外一个服务依赖于下订单服务,比如用户服务,它需要查询用户订单,那么用户服务查询订单也会引起大量的延迟和请求堆积,导致用户服务也不可用,最终故障在整个分布式系统中蔓延,导致整个系统雪崩。

服务降级

所谓服务降级,就是当某个服务熔断之后,服务端提供的服务奖不在被调用,此时由客户端自己准备一个本地的fallback回调,返回一个默认值来代表服务端的返回。这种做法,虽然不能得到正确的结果,但至少保证了服务的额可用,比直接抛出错误或者服务不可用要好得多,当然这需要根据实际业务场景来选择。

异常处理

在调用服务提供者时,自己也可能会抛出异常,默认情况下,方法抛出了异常会自动进行服务降级,交给服务降级中的方法去处理。

当自己发生异常后,只需要在降级方法中添加一个Throwable类型的参数,就能获取到抛出的异常的类型信息,此时可以在控制台看到异常类型。

如果远程服务有一个异常抛出,但是不希望进入到服务降级方法中去处理,而是直接将异常抛给用户,那么可以在@HystrixCommand注解中添加忽略异常@HystrixCommand( ignoreExceptions = Exception.class)。

线程和信号隔离

请求缓存

请求合并

服务监控

七、SpringCloud - 声明式服务消费 Fegin

八、SpringCloud - API网管 Zuul

九、SpringCloud - 配置 Config

十、SpringCloud - 总结

二、使用步骤

1.引入库

代码如下(示例):

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import  ssl
ssl._create_default_https_context = ssl._create_unverified_context

2.读入数据

代码如下(示例):

data = pd.read_csv(
    'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())

该处使用的url网络请求的数据。


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值