场景应用

DevOps元数据管理

孤者浪人 提交于 2019-12-03 18:10:57
元数据是自动化运维的基础,对元数据的管理和查询贯穿整个运维的生命周期。我们从一个元数据的使用场景开始: 双十一抢购火热进行中,某电商后端实例的日志中出现了502错误码,运维平台监测到该异常并发送告警给相关运维。 在这个过程中,运维元数据发挥了什么作用?回答这个问题前,我们先回顾下元数据是什么。 一、元数据的管理 运维系统中的元数据包括服务、机器及其关联关系。服务元数据有服务名称、所属节点、运维人员以及域名等;机器元数据包含序列号、内存等资产信息,IP、机房等网络信息、自定义标签信息以及运行实例等部署信息。这些数据由资源管理模块维护。 资源管理模块对业务以树的形态划分层级,形成服务树,从上到下依次为产品线、系统和应用三类节点。 每个层级都可以关联机器,且上层节点包含下层节点的机器。 通过添加节点的运维及研发角色,可以实现对服务和机器的权限控制。 这种层级结构将服务与服务,服务与机器关联起来,可以直观的表达服务和机器的归属关系,便于实现权限和配置的继承。 二、元数据的应用场景 智能监控 回到上面的问题,报警流程中,服务所在机器的监控客户端查询自己所属的应用,然后从配置管理模块拉取相应监控配置,实现对日志的监控;监控业务端收到监控数据后,查找该机器对应的节点信息,将报警发送给节点的运维等人员。 此外,在DevOps落地实践中,还存在多种其他应用场景 拓扑视图

什么是断言?应用场景?

帅比萌擦擦* 提交于 2019-12-03 15:19:05
Python的 assert 是用来 检查 一个条件,如果它为真,就不做任何事。如果它为假,则会抛出AssertError并且包含错误信息。例如: x = 23 assert x > 0, "x is not zero or negative" assert x%2 == 0, "x is not an even number" 结果显示: 很多人用assert作为一个很快和容易的方法来在参数错误的时候抛出异常。但这样做是错的,非常错误,有两个原因。首先 AssertError不是在测试参数时应该抛出的错误 。你不应该像这样写代码: x = "14" if not isinstance(x, int): raise AssertionError("not an int") 显示结果: 你应该抛出TypeError的错误,assert会抛出错误的异常。 那什么时候应该使用assert?没有特定的规则, 断言应该用于 :   ☆ 防御型的编程   ☆ 运行时检查程序逻辑   ☆ 检查约定   ☆ 程序常量   ☆ 检查文档 (在测试代码的时候使用断言也是可接受的,是一种很方便的单元测试方法,你接受这些测试在用-O标志运行时不会做任何事。我有时在代码里使用assert False来标记没有写完的代码分支,我希望这些代码运行失败。尽管抛出NotImplementedError可能会更好。)

经典必会款!服务端高并发分布式架构演进之路

☆樱花仙子☆ 提交于 2019-12-03 14:38:29
1. 概述 本文以淘宝作为例子,介绍从一百个并发到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知,文章最后汇总了一些架构设计的原则。 2. 基本概念 在介绍架构之前,为了避免部分读者对架构设计中的一些概念不了解,下面对几个最基础的概念进行介绍: 分布式 系统中的多个模块在不同服务器上部署,即可称为分布式系统,如 Tomcat和数据库分别部署在不同的服务器上,或两个相同功能的Tomcat分别部署在不同服务器上 高可用 系统中部分节点失效时,其他节点能够接替它继续提供服务,则可认为系统具有高可用性 集群 一个特定领域的软件部署在多台服务器上并作为一个整体提供一类服务,这个整体称为集群。如 Zookeeper中的Master和Slave分别部署在多台服务器上,共同组成一个整体提供集中配置服务。在常见的集群中,客户端往往能够连接任意一个节点获得服务,并且当集群中一个节点掉线时,其他节点往往能够自动的接替它继续提供服务,这时候说明集群具有高可用性 负载均衡 请求发送到系统时,通过某些方式把请求均匀分发到多个节点上,使系统中每个节点能够均匀的处理请求负载,则可认为系统是负载均衡的 正向代理和反向代理 系统内部要访问外部网络时,统一通过一个代理服务器把请求转发出去,在外部网络看来就是代理服务器发起的访问

Kafka、RabbitMQ、RocketMQ等消息中间件的介绍和对比(转)

二次信任 提交于 2019-12-03 10:55:51
前言 在分布式系统中,我们广泛运用消息中间件进行系统间的数据交换,便于异步解耦。现在开源的消息中间件有很多,前段时间产品 RocketMQ (MetaQ的内核) 也顺利开源,得到大家的关注。 概念 MQ简介 MQ,Message queue,消息队列,就是指保存消息的一个容器。具体的定义这里就不类似于数据库、缓存等,用来保存数据的。当然,与数据库、缓存等产品比较,也有自己一些特点,具体的特点后文会做详细的介绍。 现在常用的MQ组件有ActiveMQ、RabbitMQ、RocketMQ、ZeroMQ、MetaMQ,当然近年来火热的kafka,从某些场景来说,也是MQ,当然kafka的功能更加强大,虽然不同的MQ都有自己的特点和优势,但是,不管是哪种MQ,都有MQ本身自带的一些特点,下面,介绍MQ的特点。 MQ特点 1、先进先出 不能先进先出,都不能说是队列了。消息队列的顺序在入队的时候就基本已经确定了,一般是不需人工干预的。而且,最重要的是,数据是只有一条数据在使用中。 这也是MQ在诸多场景被使用的原因。 2、发布订阅 发布订阅是一种很高效的处理方式,如果不发生阻塞,基本可以当做是同步操作。这种处理方式能非常有效的提升服务器利用率,这样的应用场景非常广泛。 3、持久化 持久化确保MQ的使用不只是一个部分场景的辅助工具,而是让MQ能像数据库一样存储核心的数据。 4、分布式 在现在大流量

回调函数

放肆的年华 提交于 2019-12-03 07:57:34
回调函数最多的应用场景就是异步操作,因为异步的操作我们不知道这个操作到底何时结束,那么我们后续执行的代码就无法按照应有的流程走下去。 JS中的回调函数实例浅析 地址===》https://m.jb51.net/article/136848.htm <script type="text/javascript"> function demo(a,b,callback){ let c=a+b; callback(c); }; demo(1,2,function(c){ alert(c);//3 }) 来源: https://www.cnblogs.com/IwishIcould/p/11784009.html

python基础面试题(全网最全!)

只愿长相守 提交于 2019-12-03 07:50:31
目录 1、为什么学习Python? 2、通过什么途径学习的Python? 3、Python和Java、PHP、C、C#、C++等其他语言的对比? 4、简述解释型和编译型编程语言? 5、Python解释器种类以及特点? 6、位和字节的关系? 7、b、B、KB、MB、GB 的关系? 8、请至少列举5个 PEP8 规范 9、通过代码实现如下转换: 10、请编写一个函数实现将IP地址转换成一个整数。 11、python递归的最大层数? 12、求结果: 13、ascii、unicode、utf-8、gbk 区别? 14、字节码和机器码的区别? 15、三元运算规则以及应用场景? 16、列举 Python2和Python3的区别? 17、用一行代码实现数值交换: 18、Python3和Python2中 int 和 long的区别? 19、xrange和range的区别? 20、文件操作时:xreadlines和readlines的区别? 21、列举布尔值为False的常见值? 22、字符串、列表、元组、字典每个常用的5个方法? 23、lambda表达式格式以及应用场景? 24、pass的作用? 25、*arg和**kwarg作用? 26、is和==的区别? 27、简述Python的深浅拷贝以及应用场景? 28、Python垃圾回收机制? 29、python的可变类型和不可变类型? 30、求结果:

闭包的理解和应用场景

北慕城南 提交于 2019-12-03 07:07:44
1.什么是 闭包 ?? 在了解闭包之前,我们要清楚js的另一个知识,那就是 作用域链 。什么是作用域链,比如一个函数里面包含着另一个函数,里面的函数在使用一个变量的时候会在函数自己的作用域内去查找这个变量,如果没有,就会沿着作用域链向上级函数的作用域去查找, 这样的一个过程我们就叫做作用域链。 作用域链是可以有函数内部向外部去查找使用需要的变量,但是无法从上到下去查找函数内部的变量,所以这时候就出现了闭包,闭包就是解决这一问题。简单来说, 闭包就是一个可以访问另一个函数内部变量的函数。 1 function f1(){ 2 var n = 100 3 function f2(){ 4 n=n+100 5 console.log(n); 6 } 7 return f2 8 } 9 var temp = f1() 10 temp() // 200 在上述代码中创建了一个函数f1(),并在其内部创建了一个函数f2(),在正常情况下,在f2中可以访问f1中的变量n,但是f1不能访问f2中定义的变量,但是通过return将f2作为参数返回给f1,通过f2闭包来建立起与f1的联系,这样就可以访问f1中的变量 例子2. var aaa = (function(){ var a = 1; function bbb(){ a++; console.log(a); } function ccc(){

设计模式

丶灬走出姿态 提交于 2019-12-03 07:07:41
设计模式有哪些? 单例模式:单例模式对实例个数的控制并节约系统资源.在它的核心结构中只包含一个被称为单例类的特殊类,通过构造函数私有化和静态块以及提供对外访问的接口来实现. 应用场景:如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。 工厂模式:工厂模式主要是为创建对象提供了接口 应用场景如下:在编码时不能预见需要创建哪种类的实例;系统不应依赖于产品类实例如何被创建、组合和表达的细节。 观察者模式:定义了对象间一对多的依赖关系,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新 应用场景如下:对一个对象状态的更新,需要其他对象同步更新,而且其他对象的数量动态可变;对象仅需要将自己的更新通知给其他对象而不需要知道其他对象的细节; (实现参考https://www.jianshu.com/p/12a009f8d016) 来源: https://www.cnblogs.com/yh2two/p/11782347.html

python面试题300多题

蓝咒 提交于 2019-12-03 06:56:39
第一部分 Python基础篇(80题) 为什么学习Python? 通过什么途径学习的Python? Python和Java、PHP、C、C#、C++等其他语言的对比? 简述解释型和编译型编程语言? Python解释器种类以及特点? 位和字节的关系? b、B、KB、MB、GB 的关系? 请至少列举5个 PEP8 规范(越多越好)。 通过代码实现如下转换: 二进制转换成十进制:v = “0b1111011”
 十进制转换成二进制:v = 18
 八进制转换成十进制:v = “011”
 十进制转换成八进制:v = 30
 十六进制转换成十进制:v = “0x12”
 十进制转换成十六进制:v = 87 请编写一个函数实现将IP地址转换成一个整数。 如 10.3.9.12 转换规则为: 10 00001010 
 3 00000011
 9 00001001 
 12 00001100
 再将以上二进制拼接起来计算十进制结果:00001010 00000011 00001001 00001100 = ? python递归的最大层数? 求结果: v1 = 1 or 3
 v2 = 1 and 3
 v3 = 0 and 2 and 1 
 v4 = 0 and 2 or 1 
 v5 = 0 and 2 or 1 or 4 
 v6 = 0 or Flase and 1 ascii

Python【day 13】内置函数02

巧了我就是萌 提交于 2019-12-03 06:09:23
一、作用域相关-2个 1、locals() 参数是空 返回当前位置作用域的所有变量,返回的是字典 当前位置:函数内,返回局部变量 当前位置:函数外,返回全局变量 2、globals() 参数是空 返回全局变量,返回的是字典二、迭代器-生成器相关--3个 1、range() 生成数字数据,例如:等差数列 参数是数字 2、next() 参数是迭代器-Iterator,返回的是迭代器的一个取值,只能向下取值,不能后退 和迭代器.__next__()等效--内部原理 3、iter() 用于把Iterable转换成迭代器 参数是Iterable,返回的是迭代器,内部调用的是Iterable.__iter__() 可迭代类型的(可迭代的):Iterable 包括:str list tuple dict set range() open() 迭代器:Iterator Iterator = iter(Iterable) 或者 Iterator = Iterable.__iter__() 注意:列表是Iterable,而不是Iterator三、其他-12个 1、字符串类型代码的执行--3个 1、eval() 作用:用于实现计算器,字符串表达式的执行 参数:字符串表达式 比如:'1+3' 返回:int--计算结果 应用场景:有返回值的字符串形式的代码- 比如:计算器、'[1,2]'或者"{'name'