Jump to Navigation

Welcome!

  NullGet是使用Qt编写的,运行于多种平台的GUI界面的多线程多协议断点续传下载软件。  使用NullGet可以轻松下载网络的多种协议的数据流,加快下载速度,支持断点续传,目前支持的协议有:HTTP,HTTPS,FTP,MMS,RTSP。而且它能运行于当前大多数流行的操作系统,包括Windows,Linux,FreeBSD等。     下载NullGet

  NullFXP 是一个基于Qt 4 开发的SFTP/FTP 客户端软件。目前已经实现基本的多文件上下传功能。详细信息查看本站项目说明页面。     下载nullfxp

  我们的目标是打造一个开源的,跨平台的,多线程的,运行稳定的下载软件,另一个就是整理Qt库开发跨平台GUI应用程序的相关资料。欢迎各位朋友对本站开源项目提供意见及建议,欢迎有兴趣的朋友参与本站开源项目,请联系 drswinghead at gmail dot com

grpc与http2的关系

grpc与http2的关系

grpc client 发送包到原生的http2 server

client收到报错:

panic: rpc error: code = 9 desc = transport: received the unexpected content-type "text/html; charset=UTF-8"

server端输出:

输出正常,包括了http2的所有信息,默认情况下响应了404。

golang CGO FAQ & TIPS : cgo 从 C 传递 slice 到 go

cgo 从 C 传递 slice 到 go

这里一般会用在c的callback中。

需要加一个wrapper,比直接调用go函数中间多了一个转换步骤,但方便了许多。

执行流程为,c调用发起 -> c wrapper -> go export

.go:

//export a_function_callback
 func a_function_callback(args []C.astruct) {}

.c:

gRPC半透明转发反向代理

gRPC半透明转发反向代理

转发需求说明

基于gRPC协议的网络服务代理层,能够起到正确转发请求的功能。

在真实运行环境情况中,服务可能表现的更离散,通过添加一个带路由功能的、行为一致的反向代理层, 有效减小客户端要考虑的不同处理机制,同时也简化了客户端的一些配置。

特性: * 半透明转发(相对于透明转发) * 自发现路由(相对于固定路由) * 多协议支持 * 协议不变规则 * 对等无状态

半透明转发

透明转发,指的是在转发TCP连接上,逐字节无修改的转发。这种转发适合后端一致,只开放一个出口的场景。

在该模块使用的半透明指的是需要对请求进行部分解析,解析出来请求的服务名称/路径信息,根据这一信息转发到合适后端。

请求包包含两个部分,对目前支持的协议来说,一个是头信息部分,一个是数据部分。

注意,这里的部分解析,只解析头信息部分,并不解析数据部分,因为gRPC协议的解析需要数据包相应的结构体, 而在代理层选择不带数据包的结构体,也就无法解析数据包了。这些数据包,只需要透明原样转发到后端即可。

对于部分解析的请求,确定转发后端后,重新构造新的请求,并发送到后端。

Category:

基于网络的准实时服务监控

基于网络的准实时服务监控

服务作为一个操作系统进程,可能由于程序本身的bug或者停机原因而退出服务。

对于OP系统来说,监控可以达到有效的知识及报警目的。

对于DEV来说,有时根本不需要,查找原因并重启一般人工介入。

但是对于一个更自动化了的完整系统来说,除了OP提供的监控与协助诊断之外,

也许可以实现DEV才能够实现的一种浸入式的监控,并在有监控事件时做精细准确的处理。

常用服务进程监控方式

一般采用第三方服务来监控服务进程的存活状态,并且一般使用OP的系统,如puppet,chef等。

这种方式的特点是一般运行运行在每个服务节点上,确保进程退出时能够通过操作系统API/命令检测到。

这种方式使用可靠成熟应用范围广泛的系统支持,一般还是非常可靠的。

浸入式服务进程监控方式

相比第三方监控工具,这种是把监控代码嵌入服务代码中,与服务共生联系紧密的。

这种不但能够检测进程退出问题,而且还能检测进程的异常假死情况,并且在出现这些情况时做出更精细准确的响应。

但这种方式是有些缺点的,开发稍微复杂,要对异常情况做出更精细准确的响应也是很大挑战。

etcd vs consul vs zookeeper 简单对比

etcd vs consul vs zookeeper 简单对比

这是目前在分布式一致性方面非常优秀的项目。

zookeeper:

使用posix协议,功能全面,但开发与维护复杂。采用java编写。

  • k/v存储,
  • 服务协调API,
  • 锁,
  • ephemeral Node
  • API,私有协议,语言绑定包括java/c/python,常用语言有,但并不容易添加新的语言封装。
  • 效率 W: 200/秒,R: 2000/秒
  • 协调规模:

可在此基础上实现: 服务注册,监控

consul:

使用raft 协议,功能全面,自带服务注册机制,开发简单,维护中等复杂程序。采用golang编写。

  • k/v存储,
  • 锁,
  • 服务注册,监控,
  • API采用HTTP REST
  • 效率 W: ?/秒,R: ?/秒
  • 协调规模:

可在此基础上实现: 服务协调API

开发支持election选主集群项目的几种不同实现方式

开发支持election选主集群项目的几种不同实现方式

election选主目前应用日趋广泛,但其算法复杂相对复杂,自已实现需要经历大量测试保证选举算法的正确与集群的稳定。

常用的选主算法有paxos, raft等。分别对应实现 zookeeper,etcd。

另外还有几个项目的实现了election选主并提供了相应的API,后面根据研究进展不断补充。

基于 etcd v2 版本实现,较通用的实现

这其实是一种依赖全局锁的实现方式,其实现的可靠性依赖与全局锁的实现。

比如,使用redis也可以实现这种,但是由于redis的非一致性集群特性,可能在极端情况下产生错误的状态。(虽然实际上redis很稳定)

unfair version

步骤,

1、以原子方式检查key不存在并且添加一个key。

2、如果操作成功能,则成为leader。

3、如果操作不成功,则watch该key的变化,过期或者被删除后再次执行leader选举功能。

macbook linux问题

macbook linux问题

启动声音后键盘输入响应慢的问题

这个响应时间大概在10s以上了,非常成问题。

并且启动Linux后也有可能键盘布局有问题。

这时需要手动执行rc.local脚本,修改键盘的布局。(这里参数archlinux Macbook wiki)

目前还不明键盘响应慢的原因。多方查找无果。

修复快捷键

  • Option + Command + P + R 重置NVRAM
  • Ctrl + Option + Shift + Power 重启mce

PHP扩展动态回调函数的实现

PHP扩展动态回调函数的实现 PHP扩展回调函数中获取当前类/方法/函数

获取当前的执行状态,是语言的一种自省能力。对于编译动态灵活的代码非常有帮助。

一般在实现PHP扩展的时候,采用的是指定固定的扩展函数的对应C函数名的方式。

这种静态指定的方式,虽然对使用C语言简化编写扩展PHP扩展有所帮助,

但对于要求更高动态实现扩展回调函数的场景,则不是一种非常好的方式,

而应该是能够动态灵活的指定回调的C函数,甚至是运行时的切换。

如果希望能够灵活地实现回调扩展函数/方法,一个需求就是能够动态获取PHP解释器当前的执行状态,包括类名、方法名、参数名信息。

本文从动态灵活的需求,分析并总结常用模式的指定回调C函数指针,以及动态指定回调C函数指针的两种不同的实现方式。

常用指定扩展C函数方式

声明C扩展函数:

etcd客户端版本说明

前言

在用etcd客户端的时候,发现找到了几个实现,有点混乱。

简单整理一下,供使用参考,希望正确选择使用etcd客户端实现。

v0版本

支持etcd版本:v0.4-

实现方式:net/http包。

状态:已弃用

v1版本

地址:https://github.com/coreos/go-etcd

支持etcd版本:etcd-v2.0+

实现方式:net/http包。

状态:已弃用

v2版本

地址:https://github.com/coreos/etcd/client

支持etcd 版本:etcd-v2.0+

实现方式:net/http包

状态:正式版

v3版本

地址:https://github.com/coreos/etcd/clientv3

支持etcd 版本:etcd-v3.0+

实现方式:gRPC-go包

状态:正式版

Qt 5.7.0发布了

页面

订阅 www.qtchina.tk RSS


Main menu 2

by Dr. Radut