• Stars
    star
    314
  • Rank 133,353 (Top 3 %)
  • Language
    C
  • Created over 7 years ago
  • Updated about 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

quic、prot_quic、goquic、libquic源码中文注释分析,增加C++ quic-client和quic-server example 程序,便于快速掌握学习谷歌quic库源码和学习quic协议,作为新的网络加速协议,可以根据实际需要应用于自己的工程项目中。把google quic源码和goquic合并到一个工程编译安装

reading-and-annotate-quic

goquic、libquic、quic_client_server_example源码注释分析

nginx高并发设计优秀思想应用于其他高并发代理中间件:

redis、nginx、memcache、twemproxy、mongodb等更多中间件,分布式系统,高性能服务端核心思想实现博客:

QQ交流群1(针对在校生)-(群号:568892619 )

群号:568892619
在校生nginx、redis、memcache、twemproxy等源码实现交流

QQ交流群2(针对已工作,有一些技术基础的同学)-(581089275)

群号: 581089275
主要针对有一定技术基础的开发人员,提升其基础组件源码技术深度(如nginx、redis、memcache、twemproxy、mongodb、存储引擎、内核网络协议栈等)

nginx高性能特性应用于其他项目,效果明显

Nginx多进程高并发、低时延、高可靠机制在缓存代理中的应用: https://github.com/y123456yz/reading-code-of-nginx-1.9.2/blob/master/%E5%80%9F%E9%89%B4nginx%E7%89%B9%E6%80%A7%E5%BA%94%E7%94%A8%E4%BA%8E%E5%85%B6%E4%BB%96%E9%A1%B9%E7%9B%AE-Nginx%E5%A4%9A%E8%BF%9B%E7%A8%8B%E9%AB%98%E5%B9%B6%E5%8F%91%E3%80%81%E4%BD%8E%E6%97%B6%E5%BB%B6%E3%80%81%E9%AB%98%E5%8F%AF%E9%9D%A0%E6%9C%BA%E5%88%B6%E5%9C%A8%E7%BC%93%E5%AD%98%E4%BB%A3%E7%90%86%E4%B8%AD%E7%9A%84%E5%BA%94%E7%94%A8.docx

nginx多进程、高性能、低时延机制应用于缓存中间件twemproxy,对twemproxy进行多进程优化改造,提升TPS,降低时延:
http://blog.itpub.net/69908606/viewspace-2565161/

一. goquic下载编译安装过程

  1. echo $GOPATH查看环境变量路径,然后进入该目录(根据自己实际情况进入相应目录)
    [root@XX reading-and-annotate-quic]# echo $GOPATH
    /root/gopath

  2. cd /root/gopath/src/github.com
    如果没有想要目录,则创建

  3. 在github.com目录下devsisters目录
    mkdir devsisters;
    cd devsisters;

  4. 下载代码
    git clone https://github.com/y123456yz/reading-and-annotate-quic

  5. 拷贝reading-and-annotate-quic目录中的goquic文件夹到/root/redisbackup/src/github.com/devsisters/目录下面

  6. 编译 GOQUIC_BUILD=Release ./build_libs.sh
    如果编译没问题会有如下信息:
    d/stateless_rejector.o
    ar: creating libgoquic.a
    a - build/adaptor.o
    a - build/adaptor_client.o
    a - build/chlo_extractor.o
    a - build/go_ephemeral_key_source.o
    a - build/go_proof_verifier.o
    a - build/go_quic_alarm_factory.o
    a - build/go_quic_client_packet_writer.o
    a - build/go_quic_client_session.o
    a - build/go_quic_connection_helper.o
    a - build/go_quic_dispatcher.o
    a - build/go_quic_per_connection_packet_writer.o
    a - build/go_quic_server_packet_writer.o
    a - build/go_quic_simple_crypto_server_stream_helper.o
    a - build/go_quic_simple_dispatcher.o
    a - build/go_quic_simple_server_session.o
    a - build/go_quic_simple_server_session_helper.o
    a - build/go_quic_simple_server_stream.o
    a - build/go_quic_spdy_client_stream.o
    a - build/go_quic_time_wait_list_manager.o
    a - build/go_utils.o
    a - build/proof_source_goquic.o
    a - build/stateless_rejector.o
    lib/linux_amd64/ updated

  7. 测试
    [root@centlhw1 goquic]# go build example/server.go
    [root@centlhw1 goquic]# ./server
    [root@centlhw1 goquic]# ./server -h
    Usage of ./server:
    -addr string
    TCP/UDP listen address (default "0.0.0.0")
    -cert string
    Certificate file (PEM), will use encrypted QUIC and SSL when provided
    -key string
    Private key file (PEM), will use encrypted QUIC and SSL when provided

二. 借助libquic库实现的客户端和服务端例子编译方法

  1. 先进入libquic-client-server-example/libquic目录,编译出libquic库
  2. 进入libquic-client-server-example/quic_client_server_example目录,编译出quic client和quic server可执行文件

三. 说明

goquic和libquic-client-server-example都依赖libquic,他们各自一份libquic的原因是: quic_client_server_example参考quic_toy源码, 它是基于libquic老版本开发的,goquic是基于libquic新版本开发。

编译出现问题参考这里

https://github.com/y123456yz/reading-and-annotate-quic/tree/master/libquic%20centos6.5%E7%BC%96%E8%AF%91%E7%8E%AF%E5%A2%83%E8%AE%BE%E7%BD%AE

文档参考

https://github.com/y123456yz/reading-and-annotate-quic/tree/master/libquic%20centos6.5%E7%BC%96%E8%AF%91%E7%8E%AF%E5%A2%83%E8%AE%BE%E7%BD%AE/%E6%96%87%E6%A1%A3%E8%B5%84%E6%96%99

nginx http2 quic学习参考:

nginx源码中文详细分析注释参考:https://github.com/y123456yz/reading-code-of-nginx-1.9.2
libquic goquic编译安装,源码分析注释:https://github.com/y123456yz/reading-and-annotate-quic
nghttp2相关参考:https://github.com/y123456yz/reading-and-annotate-nghttp2

More Repositories

1

reading-code-of-nginx-1.9.2

nginx-1.9.2源码通读分析注释,带详尽函数中文分析注释以及相关函数流程调用注释,最全面的nginx源码阅读分析中文注释,更新完毕
C
4,135
star
2

Reading-and-comprehense-linux-Kernel-network-protocol-stack

linux内核网络协议栈源码阅读分析注释--带详尽中文分析注释以及相关流程分析调用注释,对理解分析内核协议栈源码很有帮助
C
1,189
star
3

middleware_development_learning

中间件、高性能服务器、分布式存储等(redis、memcache、nginx、大容量redis pika、rocksdb、mongodb、wiredtiger存储引擎、高性能代理中间件)二次开发、性能优化,逐步整理文档说明并配合demo指导--每周末定时更新2-3篇技术文章及程序demo
C
713
star
4

Reading-and-comprehense-redis-cluster

分布式NOSQL redis源码阅读中文分析注释,带详尽注释以及相关流程调用注释,提出改造点,redis cluster集群功能、节点扩容、槽位迁移、failover故障切换、一致性选举完整分析,对理解redis源码很有帮助,解决了source insight中文注释乱码问题,更新完毕
C
676
star
5

reading-and-annotate-mongodb-3.6

分布式文档数据库mongodb-3.6(mongos、mongod、wiredtiger存储引擎)源码中文注释分析,持续更新。后期重点进行mongodb-4.4最新版本内核源码分析
C++
509
star
6

reading-and-annotate-rocketmq-3.4.6

阿里巴巴分布式消息队列中间件rocketmq-3.4.6源码分析、中文详细注释,停止更新
Java
190
star
7

tcprstat

服务器时延统计工具,在原有功能基础上,增加时延阈值统计,记录超过阈值的包个数,并把数据包时间戳记录到日志文件,这样可以根据时间戳快速定位到抓包文件中对应的包,从而可以快速定位到大时延包,避免了人肉搜索抓包文件,提高问题排查效率,所有参数可配置。可以以在线方式和离线方式分析redis、memcached、mysql、nginx等请求应答系统的时延,并定位慢响应数据报文。(源码学习交流QQ群:568892619)
C
166
star
8

reading-and-annotate-rocksdb-6.1.2

rocksdb-6.1.2 KV存储引擎源码中文注释分析,后期与mongodb默认KV存储引擎wiredtiger进行原理与性能比较,近期持续更新
C++
115
star
9

reading-and-annotate-mongodb-4.4

分布式文档数据库mongodb-4.4(mongos、mongod、wiredtiger存储引擎)源码中文注释分析,近期持续更新(近期重点)
C++
114
star
10

reading-and-annotate-docker-17.05.0

docker-17.05.0 containerd opencontainers/runc lxc mesos源码中文注释详细分析,带详细注释说明,学习容器技术很有帮助,近期持续更新
Go
66
star
11

reading-and-annotate-wiredtiger-3.0.0

文档数据库mongodb kv存储引擎wiredtiger源码详细分析注释
C
62
star
12

Reading-and-comprehense-twemproxy0.4.1

redis、memcached缓存代理twemproxy源码详细分析注释,带详尽中文注释及函数调用关系
C
53
star
13

reading-and-annotate-mongodb-5.0

分布式文档数据库mongodb-5.0(mongos、mongod、wiredtiger存储引擎)源码中文注释分析,近期持续更新(近期重点)
C++
51
star
14

Reading-and-comprehense-memcached-1.4.22

memcached源码详细分析注释,带详尽中文注释及函数调用关系,更新完毕
C
51
star
15

reading-and-annotate-nghttp2

HTTP/2库nghttp2源码中文注释分析, 后期不在更新,。停止分析nghttp2库主要原因:冗余代码太多,可读性差。如果想了解HTTP2代码实现过程,可以参考工程: reading-code-of-nginx-1.9.2;如果想学习quic实现过程,可以参考工程:reading-and-annotate-quic
C++
44
star
16

reading-and-annotate-lxc-1.0.9

容器技术:lxc-1.0.9 lxcfs-2.0.0 fuse-2.8.7源码详细注释分析
C
15
star
17

reading-and-annotate-mesos-1.2.0

Apache开源分布式资源管理框架mesos源码注释分析,新增mesos_framework_demo,带详细注释
C++
14
star