Docker与容器
写在前面从19年初开始使用Docker到现在差不到两年了,感觉对于Docker的认识还停留在使用的阶段,各个知识点串联度不够,没有形成一个体系,因此打算抽出一些时间来系统学习Docker,以便在后续使用的时候更加得心应手。本篇首先学习Docker是什么,之后会剖析Docker和相关容器技术,以及它在DevOps等运用场景所带来的巨大便利,最后学习Docker在整个虚拟化领域中的技术定位。
虚拟技术我们知道在主机时代比拼的是单个服务器的性能,如CPU主频和内存的强弱,而在云时代,最为看中的则是凭借虚拟化技术所构建的集群处理能力。从传统来看,虚拟化既可以通过硬件模拟来实现,也可以通过操作系统软件来实现。而容器技术则更优雅,它充分利用了操作系统本身已有的机制和特性,可以实现远超虚拟机的轻量级虚拟化。因此有人甚至将其称为“新一代的虚拟化”技术,并将基于容器打造的云平台亲切的称为“容器云”。
什么是DockerDocker是基于Go语言开发的开源容器项目,它诞生于2013年。现在主流的操作系统包括Linux的各大发行版、macOS、Windows等都已经支持Docker。
Docker的构想是要 ...
规则持久化存储
写在前面前面我们通过一个入门的demo来演示了如何使用Sentinel来实现接口的限流,其实它只是流控规则的一种实现,流控规则除了基于QPS和并发数以外,还支持调用关系的流量控制,但是这都不是本文的重点。本文主要介绍基于流控规则的QPS方式,如何将之前使用的流控规则进行持久化存储。
规则持久化现在系统出了一个bug,需要重启sentinel-hello服务,然后你会发现一个神奇的现象,就是之前开发者在sentinel-dashboard页面配置的限流规则居然不见了,而且该微服务显示处于“失联”状态:
因此现在需要做的就是对限流规则进行持久化操作,那么如何进行持久化呢?往下看,并阅读 官方文档 进行了解。
从官方文档中可以看出,我们上面讲到的持久化,其实是动态规则扩展里面的外部配置源扩展,接下来就详细学习这个外部配置源扩展。不过在此之前有必要先对动态规则扩展进行一个学习,并通过流控规则基于QPS实现这一例子,来介绍规则持久化存储。
内存态扩展内存态扩展就是直接通过使用API来直接修改规则,Sentinel提供了以下5个API来修改不同的规则:
12345FlowRuleManager. ...
实现接口限流
写在前面我们知道随着微服务应用的增多,服务与服务之间的稳定性就显得越来越重要,否则极易出现由于某个服务出现问题而导致其余服务全部崩溃的雪崩效应发生。在前面学习Spring Cloud的时候,我们知道了如何使用Hystrix来进行服务熔断和降级,但是由于Netflix已经宣布Hystrix不再更新,那么我们就需要选择一个它的替代品,除了官方推荐的resilience4j外,Spring Cloud Alibaba旗下的Sentinel也是备受关注。
Sentinel介绍Sentinel以流量为切入点,从流量控制、熔断降级、系统负载保存等多个维度来保护服务的稳定性。仅仅通过本篇文章是无法掌握和使用Sentinel的,因此我会用后续几篇文章来深入理解Sentinel,本文主要介绍如何使用Sentinel来实现接口限流。
Sentinel特点(1)丰富的应用场景。Sentinel承接了阿里巴巴近10年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、实时熔断下游不可用应用等。(2)完备的实时监控。Sentinel还提供实时的监控功能,使得开发者可以在 ...
Open API、存储和集群部署
写在前面前面通过两篇文章的学习,已经对Nacos有了一个较为初步的认识和使用,接下来开始学习Nacos的Open API、数据持久化、监控、集群部署、Nacos Docker等知识。
Open API我们知道Nacos提供了可视化界面,一般来说可视化的系统都提供了一套可供程序调用的API,自然Nacos也不例外。Nacos提供了一套较为完整的API接口,开发者可以通过这些接口便能很方便的基于Nacos进行二次开发。
配置管理Nacos对于配置管理提供了4个接口,分别用于获取、监听、发布和删除配置,这里以获取配置接口为例进行介绍。
获取配置请注意这里采用标准的API格式进行书写:(1)描述:获取Nacos上的配置;(2)请求类型:GET;(3)请求URL:/nacos/v1/cs/configs;(4)请求参数:
名称
类型
是否必须
描述
tenant
string
否
租户信息 ,对应于Nacos的命名空间ID字段
dataId
string
是
配置集ID
group
string
是
配置分组
(5)返回配置:
类型
描述
:——–:
: ...
实现配置中心
写在前面在前面分析Nacos的pom.xml依赖文件时,我们发现Nacos不仅支持Eureka的服务发现与注册外,还具有Ribbon的客户端负载均衡、Config的分布式配置等功能。那么本篇就来学习最后的一个功能,如何使用Nacos实现配置中心这一目的。
通过Nacos的配置管理,开发者可以将整个架构体系中的所有配置都集中在Nacos中进行存储。
快速入门接下来将演示如何使用Nacos实现配置中心,主要包括如何在Nacos中创建配置内容和如何在Spring Cloud应用中加载Nacos配置中心的配置信息。
创建配置请注意这里依旧不像之前在学习Spring Cloud Config实现配置中心时那样,需要先创建一个Spring Boot应用作为config-server,那是因为这里的Nacos既是一个“eureka-server”项目,还是一个“config-server”项目,因此配置中心服务端项目其实可以复用之前的nacos-server-1.3.1,但是需要进行一些配置修改,如下所示:
第一步,启动Nacos服务端,点击左侧的配置管理—>配置列表,然后点击右上角的“+”按 ...
实现服务注册与发现
写在前面在前面我们学习了Netflix开源的Eureka组件来实现服务发现与服务注册中心,接下来学习Spring Cloud Alibaba开源的的Nacos组件,使用它来代替eureka和consul等传统方式来实现服务发现与服务,注册中心以及Spring Cloud Config分布式配置中心的功能。由于Nacos是阿里巴巴开源的,因此中文文档非常齐全,由于本文主要介绍Spring Cloud集成Nacos,因此对于Nacos的详细介绍不会有很多篇幅,而更多的内容则会放在另一个系列文章中。
Nacos是什么Nacos简介Nacos致力于帮助开发者发现、配置和管理微服务。Nacos提供了一组简单易用的特性集,帮助开发者快速实现动态服务发现、服务配置、服务元数据及流量管理。
Nacos帮助开发者更敏捷和容易地构建、交付和管理微服务平台。 Nacos是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
Nacos特性在Nacos中,服务(Service)是一等公民,Nacos支持几乎所有主流类型的“服务”的发现、配置和管理,如Kubernetes Ser ...
Spring Cloud Alibaba介绍
写在前面在前面我们学习的都是Netflix或者Spring官方社区提供的微服务组件,也就是通常意义上的Spring Cloud技术栈,但是在一开始就提到过实现微服务不一定需要使用Spring Cloud技术栈,还可以使用国内阿里巴巴公司开源的另一套方案,不过现在这套方案已经成功纳入Spring Cloud体系,并成为Spring Cloud Alibaba项目。
Spring Cloud Alibaba简介Spring Cloud Alibaba致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过Spring Cloud编程模型轻松使用这些组件来开发分布式应用服务。
Spring Cloud Alibaba项目由两部分组成:阿里云产品组件和阿里巴巴开源组件,它旨在为Java开发人员在使用阿里巴巴产品的同时,通过利用Spring框架的设计模式和抽象能力,注入Spring Boot和Spring Cloud的优势。
请注意版本问题,Spring Cloud Alibaba项目的版本号格式为x.x.x的形式,其中x的数值类型为数字,从0开始取值,且不 ...
快速入门ElasticSearch
写在前面ElasticSearch是一个分布式、可扩展、实时的搜索与数据分析引擎,它能从项目一开始就赋予你的数据以搜索、分析和探索的能力,在日常工作和学习中扮演着非常重要的角色,鉴于此本篇将从ElasticSearch的安装、基础概念、基本用法、高级查询等角度来进行介绍。
ElasticSearch简介ElasticSearch是一款基于Apache Lucene构建的开源搜索引擎,采用Java编写,提供简单易用的RESTful API,开发者可以通过它轻松实现简单明了的搜索功能。ElasticSearch轻松的横向扩展能力,支持PB级别的结构化和非结构化数据处理。其实就是说当机器的磁盘容量不满足需求的时候,可以通过不断的横向添加节点(机器)来解决容量问题,通过这种方式可以使我们的存储容量从GB到TB甚至PB级别的转化。
接下来学习ElasticSearch的应用场景:(1)海量数据分析引擎。当你需要对应用日志、系统日志等进行分析时,可以使用ElasticSearch的聚合搜索功能来实现;(2)站内搜索引擎。当你需要快速搭建一个站内搜索的时候,使用ElasticSearch就能完成这个 ...
CICD平台搭建:Jenkins应用
接下来介绍如何将Jenkins与平时使用的工具进行集成使用,这样使得大家在可以编写Job的同时,能够灵活使用任务去集成调用Jenkins集成运用。本篇主要介绍以下内容:1、Jenkins Linux Shell集成。Linux Shell模块作为Jenkins下最常使用的模块,在Jenkins平台内最受大家欢迎的模块,作为运维人员可以无缝的将很多保存在Linux系统下的脚本迁移到Jenkins平台内,便于日常管理。作为开发人员,你也可以将平时使用到的Linux命令行任务迁移到Jenkins平台内,进行日常的代码测试等工作。2、Jenkins参数集成。Jenkins参数作为Jenkins重要的组成部分,所有需要与Jenkins进行数据交互的数据都需要从这个接口中进入,我们可以传入不同的参数,让Jenkins的任务实现不同环境、不同版本、不同逻辑的执行效果。3、Jenkins Git集成。可以使用Jenkins内建的git插件,将github、gitlab等仓库代码克隆到Jenkins本地,这样便于后续的代码构建工作。4、Jenkins Maven集成。可以使用Jenkins内建的Mave ...
CICD平台搭建:Jenkins Job安装
下面是Jenkins的首页,如图所示。接下来介绍Jenkins Job相关的内容。
Jenkins Job介绍Jenkins作为一个持续集成工具,它其实是由若干个Job任务或者Project项目构成了一个庞大的运维开发平台系统。你可以将平时的开发、测试、部署或者基础运维相关的工作任务通过创建一个项目或者任务从而保存在Jenkins任务列表当中,方便你在Jenkins平台下进行日常的开发、运维和维护工作。
在Jenkins平台下,我们的工作可以利用Jenkins内建模块或者特定的脚本语法,将我们的工作内容抽象成Jenkins Job(Jenkins任务),然后你可以在这个任务中通过配置相应的参数以及工具模块,从而作为一个可执行的任务,共享保存到Jenkins平台下,供日常工作中不同权限的人员重复build构建执行,这样就将传统的通过单机图形界面或者命令行脚本去配置执行日常任务,迁移到Jenkins这个共享平台下,去进行统一化的任务配置执行,这样就大大的简化了工作流程,方便日常的统一维护工作。
你每一次执行任务的结果记录称之为一个build构建,你可以通过查看这个build构建去获取到我 ...