企业级DevOps实战

第1章 Zookeeper服务及MQ服务

Zookeeper(动物管理员)是一个开源的分布式协调服务,目前由Apache进行维护。

MQ概念

MQ(消息队列)是一种应用程序之间的通信方法,应用程序通过读写出入队列的消息(针对应用程序的数据)通信,而无须专用连接。

MQ是一种先进先出的数据结构,是指把要传输的数据(消息)放在队列中,用队列机制实现消息传递——生产者产生消息并把消息放入队列,然后由消费者处理。消费者可以到指定队列拉取消息或者订阅相应的队列,由MQ服务推送消息。

MQ中间件是分布式系统中的重要组件,主要用于解决应用解耦、异步消息、流量削峰等问题,实现高性能、高可用、可伸缩和最终一致性架构。

MQ的优点

1.应用解耦:通常一个业务需要多个模块共同实现,或者一条消息有多个系统需要对应处理。但使用MQ中间件,在主业务完成后,发送一条MQ消息,其余模块消费MQ消息,即可实现业务,从而降低模块之间的耦合。

2.异步消息:主业务执行结束后从属业务会通过MQ异步执行,从而降低业务的响应时间,提高用户体验。

3.流量削峰:在高并发情况下,业务可以异步处理,分散高峰期业务处理压力,避免系统瘫痪。

MQ简介

RabbitMQ,ActiveMQ,RocketMQ,Kafka等。

MQ通常用于程序之间进行数据通信,程序之间不需要直接调用彼此来通信。

  RabbitMQ概念剖析

除了性能高以外,还有以下5个特点。

1.开源,性能优秀,具有稳定性保障。

2.提供可靠性消息投递模式,返回模式。

3.与Spring AMQP完美结合,API丰富。

4.集群模式丰富,表达式配置,HA模式,镜像队列模型。

5.在保证数据不丢失的前提下可保证高可靠性、可用性。

RabbitMQ完整的消息通信过程包括以下3个概念。

1.发布者:发布消息的应用程序。

2.队列:用于消息存储的缓冲。

3.消费者:接收消息的应用程序。

Kafka概念剖析

Zookeeper简介

Zookeeper是一款解决分布式应用架构中一致性问题的工具,Kafka消息队列要用到Zookeeper。在分布式应用架构(去中心化集群模式)中,需要让消费者知道现在有哪些生产者(对于消费者而言,Kafka就是生产者)是可用的。

如果没有Zookeeper注册中心,消费者如何知道生产者呢?如果每次消费者在消费之前都去连接生产者,测试连接是否成功,效率就会变得很低。

Kafka利用Zookeeper的分布式协调服务,将生产者、消费者、消息存储(broker,用于存储信息,消息读写等)结合在一起。借助于Zookeeper,Kafka能够将包括生产者、消费者和broker在内的所有组件在无状态的条件下建立起生产者和消费者的订阅关系,实现生产者的负载均衡。

第3章 Hadoop分布式存储企业实战

Hadoop实现了一个分布式文件系统,其中一个组件是HDFS。HDFS有高容错的特点,用来部署在低廉的硬件上,适合那些有超大数据集的应用程序。

HDFS放宽了POSTIX的要求,可以以流的形式访问文件系统中的数据。Hadoop框架最核心的设计师HDFS和MapReduce。HDFS为海量的数据提供了存储,MapReduce为海量的数据提供了计算。

Hadoop服务组件

Hadoop生态圈的服务组件繁多,常见的有Common、HDFS、HBase、MapReduce等。

Kafka、Hive、Pig、Mahout、SparkSQL、MapReduce、Spark、Impala、Hbase、YARN、HDFS、Sqoop、Flume、Common、Zookeeper

1.Hadoop Common是Hadoop体系最底层的一个模块,为Hadoop各个子模块提供各种工具,如系统配置工具Configuration、远程调用RPC、序列化机制和日志操作等,是其他模块的基础。

2.HDFS是Hadoop分布式文件系统缩写,是Hadoop的基石。HDFS是一个具备高度容错性的文件系统,适合部署在廉价的机器上能提供高吞吐量的数据访问,非常适合具有大规模数据集的应用。

3.YARN是统一资源管理和调度平台。它解决了上一代Hadoop资源利用率低和不能兼容异构计算框架等多种问题,实现了资源隔离方案和双调度器。

4.MapReduce是一种编程模型,利用函数式编程思想,将对数据集的过程分为Map和Reduce两个阶段。MapReduce编程模型非常适合进行分布式计算。Hadoop提供MapReduce的计算框架,实现了这种编程模型,开发人员可以通过Java、C++、Python、PHP等多种语言进行编程。

5.Spark与MapReduce相比性能提升明显,可以与YARN集成,还提供了SparkSQL组件。

6.Hbase采用了Bigbase的数据模型——列族。Hbase擅长对大规模数据进行随机、实时读写访问。

7.Zookeeper作为一个分布式服务架构,是基于Fast Paxos算法实现的,解决分布式系统中一致性问题。提供了配置维护、名字服务、分布式同步、组服务等。

Hive是Facebook开发并使用的,是基于Hadoop的数据仓库工具,可以将结构化的数据文件映射为一张表,提供简单的SQL查询功能,并将SQL转化为MapReduce作业。优点是学习成本低,降低了Hadoop的使用门槛。

8.Pig与Hive类似,也是对大规模数据集进行分析和评估的工具。与Hive不同的是,Pig提供了一种高层的、面向领域的抽象语言Pig Latin。Pig可以将Pig Latin转化为Mapreduce作业。与SQL相比,Pig Latin更加灵活,但学习成本更高。

9.Impala可以对数据提供交互查询的SQL接口。Impala和Hive使用相同的统一存储平台,相同的元数据,SQL语法,ODBC驱动和用户界面。Impala还提供了一个熟悉的面向批量或者实时查询的统一平台。Impala的特点是查询速度非常快,其性能大幅度领先于Hive。Impala并不是基于MapReduce的,他它的定位是OLAP,是Google的新三驾马车之一Dremel的开源实现。

10.Mahout是一个机器学习和数据挖掘的库,它利用MapReduce编程模型实现k-means、Native、Bayes、Collaborative Filtering等经典的机器学习算法,并使其具有良好的的可扩展性。

11.Flume是一个高可用、高可靠、分布式的海量日志采集、聚合和传输系统,支持在日志系统中定制各类数据发送方,用于数据收集。Flume拥有对数据进行简单处理并写到各个数据接收方的能力。

12.Sqoop是SQL to Hadoop的缩写,主要作用是在结构化的数据存储与Hadoop之间进行数据双向交换。也就是说,Sqoop可以将关系型数据库的数据导入HDFS,Hive,也可以将其从HDFS,Hive导出到关系型数据库中。Sqoop利用了Hadoop的优点,整个导入导出都是由MapReduce计算框架实现并行化,非常高效。

13.Kafka是一种高吞吐量的分布式发布/订阅的消息系统,具有分布式、高可用的特性,在大数据系统中得到了广泛的应用。如果把大数据系统比作一台计算机,俺么Kafka就是前端总线,来你家诶了平台中的各个组件。

Hadoop除了使用web接口,还可以使用shell命令进行访问,包括了一系列的类shell命令,可直接与HDFS及其他Hadoop支持的文件系统交互。bin/hadoop fs-help命令可以列出所有Hadoop Shell支持的命令。

第4章 Service Mesh及Istio服务治理 

Service Mesh即服务网格,是一个用于处理服务之间通信的基础设施层,负责为构建复杂的云原生应用传递可靠的的网络请求,并为服务之间的通信提供了微服务所需的基本组件功能,如服务发现、负载均衡、监控、流量管理、访问控制等。

Service Mesh有以下4个特点。

1.治理能力独立(Sidecar)。

2.应用程序无感知。

3.服务通信的基础设施。

4.解耦应用程序的重试/超时、监控、跟踪和服务发现。

Service Mesh是建立在TCP层之上的微服务层。

简单来说,网络代理可以简单类比成现实生活中的中间人,因为各种原因在通信双方中间加上一道关卡。本来双方能直接完成通信,为何要多此一举呢?因为该关卡(代理)可以为整个通信带来更多的功能,如拦截、统计、缓存、注入、分发、跳板等。

用户请求出现问题无外乎两个:错误和响应慢。

官方对Istio的介绍浓缩成了一句话:

连接、安全加固、控制和观察服务的开放平台。

Istio与Kebernetes结合

Istio是微服务通信和治理的基础设施层,本身并不负责服务的部署和集群管理,因为需要和Kubernetes等服务编排工具协同工作。

Istio在架构设计上支持各种服务部署平台,包括Kubernetes等。Istio作为Google亲儿子,对自家兄弟Kubernetes的支持肯定是优先考虑的。

各种部署平台可以通过插件方式集成到Istio中,为Istio提供服务注册和服务发现功能。

Istio架构与组件

1.数据平面:由一组代理组成,代理微服务所有的网络通信,并接收和实施来自Mixer的策略。

2.Proxy:负责高效转发与策略实现。

3.控制平面:管理和配置代理来路由流量。此外,通过Mixer实施策略与收集来自边车代理的数据。

4.Mixer:适配组件,数据平面与控制平面通过它来交互,为Proxy提供策略和数据上报。

5.Pilot:策略配置组件,为Proxy提供服务发现、智能路由、错误处理等。

6.Citadel:安全组件,提供证书生成下发、加密通信、访问控制功能。

7.Galley:配置管理、验证、分发。

Isito包括如下内容:

1.自动为HTTP、gRPC、WebSocket和TCP流量负载均衡。

2.通过丰富的路由规则、重试、故障转移和故障注入对流量行为进行细粒度控制。

3.可插拔的策略层和配置API,支持访问控制、速率限制和配额。

4.集群内所有流量的自动度量,具有日志记录和跟踪功能,包括集群的入口和出口。

5.通过强大的基于身份的身份验证和授权,在集群中进行安全的通信。

第5章 企业级DevOps应用实战

DevOps是一组过程、方法与系统的统称。

DevOps是一种软件开发方法。

软件在整个开发生命周期中的持续开发、持续测试、持续集成、持续部署和持续监控等活动只能在DevOps中实现,而不是敏捷开发或瀑布开发,这就是为什么顶级互联网公司选择DevOps作为其业务目标前进方向的原因。DevOps是在较短的开发周期内开发高质量软件的首选方法,可以提高客户满意度。

敏捷开发与DevOps的区别

敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。

敏捷开发的优点:

1.敏捷开发属于增量式开发,对于需求范围不明确、需求变更较多的项目而言,可以很大程度上响应及拥抱变化。

2.对于互联网产品而言,市场风向转变很快,需要一种及时快速的交付形式,而敏捷开发则能更好地适用于此。

3.敏捷开发可最大程度体现80/20法则的价值,通过增量迭代每次都优先交付那些能产生80%价值效益的20%功能,最大化单位成本收益。

实际上,DevOps是一种敏捷开发的方法,但已超越了它。DevOps是软件开发生命周期从瀑布式到敏捷再到精益的发展。通常情况下,出现浪费或瓶颈的场景包括不一致的环境,人工的构建和部署流程、差的质量和测试实践、IT部门之间缺少沟通和理解、频繁地中断和失败的协定,以及那些需要珍贵的资源、花费大量的时间和金钱才能保持系统运行的全套问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/681264.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NLP是什么?神经语言编程和自然语言处理是同一种技术吗?

NLP是什么? 可能是两种技术:神经语言编程(Neuro Linguistic Programming,NLP) 和 自然语言处理(Natural Language Processing,NLP) Neuro Linguistic Programming和Natural Language Process…

mysql数据库concat指定连接符号

SELECT CONCAT_WS(;;;, 你好,华为) FROM DUAL;

uniapp API文档地址 以及 HBuilder安装

uniapp API文档地址 以及 HBuilder安装 一、进入 当前网站 uni-app 官网 [uni-app](https://zh.uniapp.dcloud.io/quickstart-hx.html)二、点击截图下载文件 三、 进入 当前网站 (https://www.dcloud.io/hbuilderx.html) 浏览器会识别 也可以自行选择…

Java 基于 SpringBoot+Vue 的社区医院系统

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

Hive的Join连接

前言 Hive-3.1.2版本支持6种join语法。分别是:inner join(内连接)、left join(左连接)、right join(右连接)、full outer join(全外连接)、left semi join(左…

Linux中的信号简单介绍

信号的机制: 进程A给进程B发送信号,进程B收到信号之前先执行自己的代码,收到信号后,不管执行到程序的什么位置,都要暂停运行去处理信号,处理完毕后再继续执行。 信号的状态: 信号有三种状态…

Python学习之路-爬虫提高:常见的反爬手段和解决思路

Python学习之路-爬虫提高:常见的反爬手段和解决思路 常见的反爬手段和解决思路 明确反反爬的主要思路 反反爬的主要思路就是:尽可能的去模拟浏览器,浏览器在如何操作,代码中就如何去实现。浏览器先请求了地址url1,保留了cookie…

《Java 简易速速上手小册》第4章:Java 中的异常处理(2024 最新版)

文章目录 4.1 异常类型和错误 - 遇见你的小怪兽4.1.1 基础知识4.1.2 重点案例:文件读取处理4.1.3 拓展案例 1:处理空指针异常4.1.4 拓展案例 2:捕获多个异常 4.2 异常处理机制 - 穿上你的超级英雄斗篷4.2.1 基础知识4.2.2 重点案例&#xff1…

【开源】SpringBoot框架开发食品生产管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 加工厂管理模块2.2 客户管理模块2.3 食品管理模块2.4 生产销售订单管理模块2.5 系统管理模块2.6 其他管理模块 三、系统展示四、核心代码4.1 查询食品4.2 查询加工厂4.3 新增生产订单4.4 新增销售订单4.5 查询客户 五、…

ES分页问题

分页方式3种 from size 浅分页 其中,from定义了目标数据的偏移值,size定义当前返回的数目。默认from为0,size为10,即所有的查询默认仅仅返回前10条数据。越往后查询效率越低; 5w条以内勉强可用; 如果搜索size大于10000&#xff…

突破编程_C++_面试(基础知识(13))

面试题45&#xff1a;C中的字符串如何存储 在C中&#xff0c;字符串可以通过多种方式存储&#xff0c;但最常见和推荐使用的方式是通过 std::string 类&#xff0c;该类位于 <string> 头文件中。std::string 是一个类模板的实例&#xff0c;通常用于存储字符数组&#x…

[FFmpeg学习]从视频中获取图片

从视频中获取图片是一个比较直观的例子&#xff0c;这里从一个基础的例子来查看FFmpeg相关api的使用&#xff0c;从mp4文件中获取一帧图像&#xff0c;保存为jpeg格式图片&#xff0c;mp4文件比较好准备&#xff0c;一般手机录屏文件就是mp4格式。 原理还是比较清楚&#xff0…

2.13学习总结

1.出差&#xff08;Bleeman—ford&#xff09;&#xff08;spfa&#xff09; &#xff08;dijkstra&#xff09; 2.最小生成树&#xff08;prim&#xff09;&#xff08;Kruskal&#xff09; 最短路问题&#xff1a; 出差https://www.luogu.com.cn/problem/P8802 题目描述 AA …

sklearn:机器学习 分类特征编码category_encoders

文章目录 category_encoders简介OrdinalEncoder 序列编码OneHotEncoder 独热编码TargetEncoder 目标编码Binary Encoder 二进制编码BaseNEncoder 贝叶斯编码LeaveOneOutEncoder 留一法HashingEncoder 哈希编码CatBoostEncoder catboost目标编码CountEncoder 频率编码WOEEncoder…

《Docker极简教程》--Docker镜像--Docker镜像的管理

一、镜像标签与版本管理 1.1 标签的作用与命名规范 标签在Docker镜像中具有标识和版本控制的作用&#xff0c;可以帮助用户识别和管理不同版本的镜像。以下是一些关于Docker镜像标签的常见作用和命名规范&#xff1a; 标识不同版本: 标签通常用于区分不同版本的镜像。例如&a…

Netty应用(九) 之 编解码器概念 Netty常见的编解码器

目录 22.编解码器 22.1 编解码的概念 22.2 netty中的编解码 22.3 序列化 23.编解码器在使用过程中的两部分核心内容 23.1 序列化协议&#xff08;编码格式&#xff09;&#xff08;传输数据的格式&#xff09; 23.1.1 Java默认的序列化与反序列化 23.1.2 XML的序列化与反…

【UI自动化测试技术】自动化测试研究:Python+Selenium+Pytest+Allure,详解UI自动化测试,了解元素交互的常用方法(精)(三)

导言 在之前的文章里&#xff0c;我们一起学习了定位方式、等待机制等内容。相信通过之前的学习&#xff0c;你已经掌握了WEB自动化的一些入门知识&#xff0c;具备了编写代码的一些基础知识和能力。这篇文章&#xff0c;让我们一起学习一下模拟键盘事件。 在实际的项目当中&a…

Ps:焦点堆栈

焦点堆栈 Focus Stacking是一种摄影和图像处理技术&#xff0c;通过合并多张在不同焦距拍摄的照片来创建一张具有更大景深的图像&#xff0c;特别适用于微距摄影、风景摄影和任何需要在整个场景中保持尖锐对焦的情况。 ◆ ◆ ◆ 拍摄注意事项 1、使用三脚架 为了确保图像之间…

嵌入式大厂面试题(2)—— 富士康

从本篇开始将会更新历年来各个公司的面试题与面经&#xff0c;题目来自于网上各个平台以及博主自己遇到的&#xff0c;如果大家有所帮助&#xff0c;帮忙点点赞和关注吧&#xff01; 岗位&#xff1a;嵌入式软件工程师。 面试时间&#xff1a;30分钟。 岗位职责&#xff1a;官网…

django的基本使用-ORM(二)

一、简介 ORM对象关系映射&#xff0c;它允许你使用类和对象对数据库进行操作&#xff0c;从而避免通过SQL语句操作数据库 模型层: 负责和数据库之间进行通信 模型是一个Python类&#xff0c;它是由django.db.models.Model派生出的子类 一个模型类代表数据库中的一张表 模型类…