https://github.com/envoyproxy/envoy envoy作为Istio service mesh的主要组件,用于服务器集群内部环境的部署,是否可以简单地用于本地测试环境呢?C++ 11实现的http proxy,支持自定义filter、http2、gRPC。其JSON解析用到了RapidJSON。
一个作家最主要的能力就是编故事,这个故事并不一定是他亲身经历的,但他一定会用文字组织成一个优雅的文本,引人入胜的故事;同样的,一个coder最主要的能力就是代码裁剪,说裁剪,其实是包括了代码阅读、代码评审、代码重用、代码重构,等等。
近来试验了CMake,用作C++跨平台开发,用的还比较顺手,想记点东西,不过还是没时间。不过我个人观点,学习CMake,最主要的就是需要有根据不同项目需要,定制编写好的一些CMakeLists.txt模板文件,此模板里一定要有典型内置变量、指令、函数等的用法示例,这样对于熟练的开发人员来说,可以立即一葫芦画瓢。这方面,我觉得市面上目前所有的技术书籍都没有能够做到这一点。不仅仅如此,每个工具都有它内在的缺陷,或者是功能设计遗漏、或者是实现不一致,或者是语法设计不直观,称之为“坑”,程序员的大部分时间精力都浪费上填坑及经验总结上了。
C++里面解析JSON string,一般用的是C库cJSON,或者可以用Boost property_tree。两者都不那么灵活,设计不那么完美,毕竟C++ 不支持动态反射,不过如果有一个类似于protobuf的代码生成框架用来定制化解析JSON,比如说,基于一个完整的JSON示例文件,包含其全部嵌套结构字段和value类型特征,生成一个静态的C++类头文件。
Boost.Asio可以配置为多线程模型,基于它能够快速地实现一个HTTP服务器,用作C++后端服务的Web Server接口。缺点就是不如脚本化的框架OpenResty、Node.js/Express、Python/Flask,或者Go那样功能强大。