- 博客(17)
- 收藏
- 关注
转载 python-线程安全简介
https://blog.youkuaiyun.com/weixin_43790276/article/details/91069959这篇文章记录了基本背景和解决方案,基本够用了。Python多线程是通过threading模块来实现的。一、多线程共享全局变量from threading import Threadlist_a = [1, 2, 3]def add_list():global list_alist_a.append(100)print(list_a)if name == ‘main’
2020-11-24 18:44:54
229
转载 Python-全局解释锁介绍
1. 全局解释锁是什么Global Interpreter Lock是计算机程序设计语言解释器用于同步线程的一种机制,它使得任何时刻仅有一个线程在执行。即使是在多核处理器上,使用GIL解释器也只允许同一时间执行一个线程。常用的使用GIL的解释器有CPython与Ruby MRI。可见,GIL并不是python独有的特性。2. Python解释器有哪些CPython是官方版本的解释器,用C语言编写的,最广泛的解释器,可以方便的和C/C++进行交互Jpython由java语言编写的python解
2020-11-24 16:43:25
281
原创 Postgresql explain查询小结
在项目中有一条简单的sql语句,使用子查询非常耗时。使用联合查询,非常快。查了点资料,大概总结下关键部分。关键技术文档参照:https://blog.youkuaiyun.com/kmblack1/article/details/80761647https://blog.youkuaiyun.com/weixin_39540651/article/details/105433144使用 explain ANALYZE查看方法是从后向前;actual time记录了实际运行的起始时间和结束时间;hash cond
2020-11-24 14:16:36
1229
1
原创 Kafka生产消费数据丢失和优化小结
我们经常会遇到kafka数据丢失的问题,所以将遇到过的或有可能造成数据丢失的问题进行个小总结。其实在kafka处理数据的流程有很多,把这些流程梳理一遍,有助于分析数据丢失的情况,从这个图中可以看出数据流向,图中涉及的所以过程都可能造成数据的丢失。首先要确定是否有业务数据写入再明确数据是在kafka之前就已经丢失还是消费端丢失数据的?2.1 如果是在写入端丢失数据,那么每次结果应该完全一样(在写入端没有问题的前提下)。2.2 如果是在消费端丢失数据,那么换个消费group重新消费,多次消费结果完
2020-10-14 17:18:43
1004
1
原创 Kafka-python & Pykafka对比使用参数大全
kafka-python和pykafka基本对比对比kafka-pythonpykafka出现时间更早稍晚语言实现纯pythonpython和连接 librdkafka C 库API风格更类似java客户端更类似python客户端kafka版本支持0.8以上0.8.2 以上zookeeper支持kafka0.9以上支持支持python版本支持2.7 3.4 3.5 3.6 3.72.7, 3.4, 3.5kafka-pyth
2020-09-17 15:04:24
3961
1
转载 网络IO小白的进阶之路6-select&epoll详细介绍
select的缺点:1、单个进程能够监视的文件描述符的数量存在最大限制,通常是1024,当然可以更改数量,但由于select采用轮询的方式扫描文件描述符,文件描述符数量越多,性能越差;(在linux内核头文件中,有这样的定义:#define __FD_SETSIZE 1024)2、内核 / 用户空间内存拷贝问题,select每次都会改变内核中的句柄数据结构集,因而每次select调用时都需要从用户空间向内核空间复制所有的句柄数据结构,产生巨大的开销3、select返回的是含有
2020-09-01 20:21:15
171
转载 网络IO小白的进阶之路5-异步IO
4. 异步IO(Asynchronous I/O)Linux下的asynchronous IO其实用得不多,从内核2.6版本才开始引入。先看一下它的流程:用户进程发起read操作之后,立刻就可以开始去做其它的事。而另一方面,从kernel的角度,当它受到一个asynchronous read之后,首先它会立刻返回,所以不会对用户进程产生任何block。然后,kernel会等待数据准备完成,然后将数据拷贝到用户内存,当这一切都完成之后,kernel会给用户进程发送一个signal,告诉它read操作完成
2020-08-24 21:03:41
175
转载 网络IO小白的进阶之路4-IO多路复用
上篇文章 https://blog.youkuaiyun.com/qq_38110368/article/details/108207016中提到,非阻塞IO的方式,需要用户态不断主动询问kernel数据准备好了没有,并且每次只能检测一个连接。实际操作系统提供了更为高效的检测“操作是否完成“作用的接口。3. 多路复用IO(IO multiplexing)IO multiplexing这个词可能有点陌生,但是如果说select/epoll,大概就都能明白了。有些地方也称这种IO方式为事件驱动IO(event driv
2020-08-24 20:54:22
135
转载 网络IO小白的进阶之路3-非阻塞IO
上篇文章 https://blog.youkuaiyun.com/qq_38110368/article/details/108206010 提到,单线程阻塞IO 是在等待数据和拷贝数据两个阶段都是阻塞状态,而进程/线程池的方案能处理的连接数,缓解的调用IO也很有限。因此出现非阻塞IO(non-blocking IO)2. 非阻塞IO2.1 实现原理Linux下,可以通过设置socket使其变为non-blocking。当对一个non-blocking socket执行读操作时,流程是这个样子:图4 非阻塞IO
2020-08-24 20:10:19
122
转载 网络IO小白的进阶之路2-阻塞IO
本人这些年看了无数介绍网络IO的技术文章,讲实话,没有一篇完全看懂的,无数次放弃学习,有无数次咬牙坚持学,直到今天看了这篇文章 https://www.cnblogs.com/findumars/p/6361627.html,茅塞顿开,原来网络IO基础并没有很难,所以想在此,和大家分享学习内容,供自己和大家学习。Richard Stevens的“UNIX® Network Programming Volume 1, Third Edition: The Sockets Networking ”,6.2节“
2020-08-24 19:52:09
184
原创 WSGI你不知道的事
wsgi是什么?是一个协议,定义了一套接口,实现服务器端和应用端的通信的规范化,使web底层和application解耦。就如下图:wsgi主要有两个工作:1.和服务端的交互:从底层解析http协议,然后调用应用程序提供的环境信息(host、post、进程模式等)和回调函数(这个回调函数就是将app设置的http header、status等信息传递给服务端)。2.和app的交互:即上面的回调函数所做的内容,将app设置的http header、status等信息生成返回的header、body、
2020-08-24 16:08:35
255
原创 网络IO小白的进阶之路1
影响的都是收消息方式:1.简单的一问一答式client的一个线程收,一个线程发;server的一个线程收,一个线程发。消息是阻塞同步的,一直阻塞在那里,只有内核态收完了,才会拷贝到用户态。这种机制会让程序一直挂在内核态,不占用cpu资源。只有数据拷贝到用户态之后,才会唤醒。2.多个client+server1.)多进程/线程的阻塞同步,即10个client,启10个线程,每个线程都用阻塞的方式处理。2.)单线程/进程+非阻塞同步方式。所有的fd都放在一个队列里,一直在轮训轮训,立刻返回???
2020-08-24 16:06:41
120
转载 linux内存故障排查
上周五,在测试的一台服务器上频繁出现系统内存不够,进程被kill的现象。原以为是开源软件或自研软件内存泄漏导致的,可查看内存信息发现很奇怪,一台16GB的机器,进程总共就占了不到6GB,但memfree的内存只有160MB,cache也没有多少。翻了很多资料,直到 https://www.cnblogs.com/tcicy/p/8299712.html里面的这段话解答了我们的疑惑:在VMware guest上有一个常见问题,就是VMWare ESX宿主机会通过guest上的Balloon drive
2020-08-23 17:32:52
2884
转载 HTTP/1.0 HTTP/1.1 HTTP/2 区别介绍
影响一个 HTTP 网络请求的因素主要有两个:带宽和延迟。带宽:如果说我们还停留在拨号上网的阶段,带宽可能会成为一个比较严重影响请求的问题,但是现在网络基础建设已经使得带宽得到极大的提升,我们不再会担心由带宽而影响网速,那么就只剩下延迟了。延迟:浏览器阻塞(HOL blocking):浏览器会因为一些原因阻塞请求。浏览器对于同一个域名,同时只能有 4 个连接(这个根据浏览器内核不同可能会有所差异),超过浏览器最大连接数限制,后续请求就会被阻塞。DNS 查询(DNS Lookup):浏
2020-08-16 19:56:54
639
原创 Kafka HA机制
当多个Broker启用后,Kafka如何工作呢,数据又是如何存储,以保证Kafka集群的稳定性和可恢复性呢。这就是这篇文章所要探讨的内容了。
2019-07-01 14:35:39
315
原创 Kafka 设计基础原理
对于一个被广泛使用的分布式消息系统,大名鼎鼎的kafka有诸多优点,可具体又有什么的?Kafka又是如何设计保证它的优点呢,此文向大家一一揭晓
2019-07-01 12:20:53
128
原创 PostgreSQL备份&恢复方案
PostgreSQL支持三种备份方案,分别是SQL快照方案、文件快照方案和持续存档方案。而每个方案都有优缺点,需要根据项目需要选择最适合的备份和恢复方案
2019-06-05 19:12:12
1228
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人