实现服务注册与发现
写在前面在前面我们学习了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构建去获取到我 ...
CICD平台搭建:Jenkins安装
Jenkins简说Jenkins是一个用java编写的开源持续集成工具,它提供了软件开发的持续集成服务,支持很多主流软件和配置管理工具与其配合实现软件配置管理和持续集成功能。Jenkins作为一个运维行业内用途最为广泛的持续集成工具,它将传统意义上的运维工作与开发工作完美地结合在一起。作为一个运维人员,你可能需要编写很多脚本,执行很多命令,但如何去管理、审计这些脚本,以及如何在数以万计的服务器中和同事协同配合完成一项工作,则是目前我们需要考虑的问题。如果你仅仅限制于command line(命令行),那以后无论遇到任何突发情况,你将疲于奔命,因为你是人不是机器。虽然你可以知道你写的脚本在哪里起作用,在哪里执行实现了什么功能等,但是你手里没有一套完整的系统去管理和让别人了解你日常工作的内容,可能对于别人来说你的工作就是一个黑盒。Jenkins的出现彻底打开了这个黑盒,可以让运维人员和开发人员可以协同工作到一起,进入到一个白盒之中,它在运维工作中起到的是承上启下的作用。首先Jenkins的前台界面方便我们能够直观的收集到我们执行的job所有相关的信息,而且它能够作为一个Pipeline将我 ...
CICD平台搭建:Ansible playbooks介绍
将下来介绍Ansible playbooks的相关知识,之前你已经在本地安装了ansible,现在就是如何编写脚本让ansible发挥作用。
playbook语言介绍playbook作为ansible独有的术语,是ansible配置部署的编排语言框架,本身简单易读的语法结构以及丰富的内嵌模块非常易于我们编写远程系统部署策略,playbook基础的文件格式为yaml格式,可以将playbook称之为总的乐谱,每一个yaml文件可以称为一个playbook的乐章,在这个playbook下可以编写一个或多个task作为这个乐章的音符。我们通过ansible相关的命令去play演奏这个乐谱,就可以将我们预先写好的任务,按照特定的编排部署到远程服务器当中,也就是演奏给我们的听众听。
接下来将详细说明及通过demo演示的方式,向大家介绍一个基础playbooks的框架格式与编写规范。这里通过引入一个Test playbooks乐谱作为一个例子,进行逐一介绍它的基础框架和格式。下面是它的总文件结构:
inventory目录、roles目录及deploy.yml文件构成了它的表层目录结构。下面就详细 ...
CICD平台搭建:Ansible安装
在前面系统学习了gitlab的相关知识点和安装、配置、流程等demo演示,接下来介绍Ansible这个工具。在此之前可以设想一下十年前的我们是如何对产品进行部署测试的?如果那时候你公司有开发能力,可能会研发出一套部署测试脚本或者系统,去线上部署自己的产品。又或者通过自己的运维团队和开发团队协同将产品部署到线上,但是在很多情况下运维人员只是做一些基础的搭建服务器等工作,而更多涉及到测试部署的工作都是靠开发人员来完成的,这使得开发人员压力山大。开发人员都有一套自己解决部署问题的黑盒,虽然问题完成了,但是问题也同样明显,大家没有一套统一解决问题的框架或者说是部署工具。如果没有一份详细的部署文档去解释开发人员的部署架构原理,那么可能在后期给该工具使用的运维人员带来巨大的时间成本。
而Ansible的出现就是为了解决这个问题,它可以让我们放弃自己原来开发的部署工具。Ansible是一个开源的部署工具,开发语言为Python,并以playbook作为基础部署架构,仅仅依赖系统标配的ssh连接与授权管理,就可以实现远程节点的快速部署。它的模块化部署管理,兼容Linux与Windows平台,所以说An ...
CICD平台搭建:Gitlab应用
Gitlab的应用应用说明接下来将从开发和运维的两个视角来介绍Gitlab的应用。Gitlab强大之处在于具有强大的分布式代码版本控制系统的同时,也有出色的后台管理能力。它的后台管理可以针对不同项目、不同用户去制定不同的访问策略,开发和运维这两个角色可以各司其职,互不影响地在自己的场景下工作。
作为开发人员,关注点肯定就是代码的快速发布与审核。每一个项目下各个小组都会去维护自己的项目分支,当这个分支在多次不同环境下部署测试成功之后,接着会提交一个Master主分支合并的申请,然后等待项目领导去审核,决定是否确认合并操作,确认后开发人员又会接着另一个Feature分支继续工作。
作为运维人员,关注点肯定就是在保证Gitlab本身的维护与管理。平时运维人员大部分时间都需要去后台获取相关的系统关键值,如CPU利用率,内存、磁盘使用率,系统健康状态等,以保护Gitlab始终处于一种高可用、高并发、高性能的状态。除此之外也需要关注Gitlab的权限管理,作为Gitlab的admin你需要去分配不同人对项目具有不同的权限,保证开发人员具有分支的克隆、删除、推送、提交、合并和创建分支等权限,保证项目 ...
CICD平台搭建:Gitlab安装
持续交付持续交付指的是一种能够使得软件在较短的循环中可靠的发布的软件工程方法。在持续交付初期需要掌握的内容有:(1)版本控制系统,如GitLab、GitHub等,也就是代码仓库,用来作为项目构建初期代码构建的仓库平台;(2)持续集成工具,如Jenkins,作为核心的平台,用来将代码抓取到本地,进行集成配置工作;(3)部署交付工具,如Ansible、Saltstack、Chef等,对我们在Jenkins本地抓取的代码进行最终的远程服务器端交付推送工作。因此我们可以得出一个结论:持续交互=交付+版本控制系统&持续集成工具&部署工具。
本套笔记用于记录Jenkins+Ansible+Gitlab如何搭建一个自动化的部署平台。在此过程中会解决一些问题,如Jenkins如何集成Ansible、playbook等;如何使用Gitlab集成我们的交付部署。
记录内容本套笔记主要记录的内容有:(1)GitLab代码仓库的搭建流程与使用流程,且介绍这个工具在项目交付过程中所起的作用;(2)Ansible部署工具的虚拟环境配置以及Playbook脚本编写规范,并介绍Ansible的架构使用 ...
