There are more ways than difficulties
微服务的框架体系中,服务发现是不能不提的一个模块,传统的服务框架必须知道服务的网络位置,而这些位置信息都是通过配置文件完成,当服务大量扩张的时候,这管理规模别提多么庞大,更别提现在的docker容器化的大量部署的时代,如何可以动态的让程序间明白我所需要的服务在哪?是微服务时代必须解决的事情,而随着微服务越来越流行,大量涌现的服务发现框架,我们比较常见的用:zookeeper,eureka,etcd,consul……
collections在python的标准库中被称为容器数据类型,collections可以为我们重新定义python的数据基础类型,collections的方法不多,但是却可以在很多地方看见这个模块的使用,是一个常用的python标准库。
人要衣装,佛要金装,函数要装饰器。要了解装饰器,首先我们需要了解高阶函数,函数在python中作为一级类对象,可以被当作参数传递,也作为函数返回,简单来说高阶函数就是不是单一函数对象,里面函数嵌套函数,所以这么说python是支持函数式编程的,而装饰器首先它肯定是一个高阶函数,本质即是接受函数作为参数,并且返回一个函数,装饰器装饰了函数,可以在函数执行的前后做一些操作,外层函数的作用域的变量(但不是全局变量)可以被内部函数应用,这又是python闭包的概念,装饰器集合了许多python函数的概念,所以一直被称为最难掌握的内容。
为自己留个后门,为了可以在不同的环境中连上服务器,为了方便管理,总希望这么做,但是如此一来又得担心安全问题。所以一般我们针对特定的服务都是固定ip访问,所以想要即安全又可以任何环境都可以访问,我们就需要让防火墙在特定的时刻开放目前ip的访问,而我们既无法连接上服务器又要让服务器开放端口,这似乎是不可能的事。而knock就为我们提供了这样的服务,knock与防护墙通过端口访问形成特定的规则,从而使防护墙验证来源安全而自动开放防火墙规则,而knock就是敲门的意思。
在互联网上总有许多恶意的扫描,为了获得服务器上的服务,外部暴露的端口就可以得知,而一些服务需要通过改变端口的服务,虽然我们依旧可以通过协议测试知道该端口后的服务,但这也是无疑增加了入侵的成本,大部分的入侵都是会通过端口扫描器来测试服务器端口,所以我们可以依据这一点来更加增加入侵的成本。PortSentry就是这么一款用来检测恶意扫描的工具,PortSentry可以实现检测几乎所有类型的网络扫描,并做出了反应。一旦发现可疑行为,PortSentry可以采用如下的措施来加强防范:
python迭代器,可以直接用于for循环的对象称为可迭代对象,可以直接被next()
函数调用并不断返回下一个值的对象称为迭代器,所以可迭代对象可以通过iter()
来转变为迭代器。我们前面说的生成器也是迭代器的一种。
socket源于unix,而unix/linux基本哲学“一切皆文件”,socket有两种,分别是基于文件的和基于网络的。基于文件可用于两个进程运行同一服务器上,socket基于文件的形式提供,这样的效率比通过基于网络的要快。但是需要与外部服务器进行通信,我们就需要基于网络的socket。
nginx_lua模块是nginx的第三方模块,它可以将lua语言嵌入到nginx配置中,从而极大的扩展了nginx的能力,nginx以高并发而知名,而lua作为嵌入式语言轻便,两者的结合可以做到在nginx层就实现编程,而这里我们加入waf的lua过滤编程来实现waf。
如果在一个内部函数中,对外部作用域(但不是全局作用域)的变量进行引用,那么内部函数就被称为闭包,闭包是由函数及其相关的引用环境组合而成的实体(闭包=函数+引用环境),函数可以作为另一个函数的参数或返回值,可以赋值给一个变量,函数可以嵌套定义,即在一个函数内部再定义一个函数,有了嵌套函数这种结构,便产生了闭包。
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: true tags: true