凡科可以做游戏网站吗,南宁网站建设 传导,温州网站制作优化,wordpress自定义字段怎么用本文属于专栏《构建工业级QPS百万级服务》 提纲#xff1a;
选择大概率能完成业务目标的工具选择最适合的工具制作最适合的工具 本文所说的项目工具#xff0c;泛指业务软件开发#xff0c;所依赖的第三方提供的成熟的资源。包括但不限于开发语言、编辑工具、编译工具、三方… 本文属于专栏《构建工业级QPS百万级服务》 提纲
选择大概率能完成业务目标的工具选择最适合的工具制作最适合的工具 本文所说的项目工具泛指业务软件开发所依赖的第三方提供的成熟的资源。包括但不限于开发语言、编辑工具、编译工具、三方库、方法论。使用项目工具的目的是为了按时高质量完成项目。 第一阶段选择大概率能完成业务目标的工具。这里为什么不是选择每个环节都用最优的工具如果能做到当然最好。但是一个人的知识是有局限的而环境是不断变化的做到每个环节最优是需要大量精力且需要承担风险的另外不同的工具最擅长解决不同的问题在工程初期我们很难预估所有的关键问题在哪里。 一个实践的例子是。在2020年的时候我负责设计搭建一个新的服务其中json解析的工具我选择了RapidJson而实际上性能显著提升的simdjson、yyjson在2019年、2020年相继出现了从今天的角度回看似乎我的选型是错误的。但是引入没有经过大量使用和验证的三方库是有风险的比如稳定性是否足够在极端情况下的性能和正确性。这些都是需要花精力去验证的项目中有很多依赖项我的资源和时间不足以去做这么详细的论证在大部分的工业软件中我们也没法做到完美。选择大概率没问题的工具适用于项目中大部分的环节。 站在2024年2月的时间点如果现在需要开发一个同样的服务我是如何选择用什么库解析呢。首先目前各自的官网上simdjson给的性能测试如图1yyjson给的性能测试如图2。处于一个各自说自己好的情况我相信测试结论但是得到结论所使用的各自的应用版本和输入数据集不同所以是各自有擅长的场景。截止2024年2月17日simdjson在github的是18.1k而yyjson是2.8k当然这不能说明simdjson比yyjson好但是这能说明大概率在大部分场景simdjson比yyjson更好。 图1 图2 第二阶段选择最适合的工具。选择大概率正确的工具核心原因是因为资源和时间不够。但如果我的服务大部分CPU都用在了json解析上那大概率正确就不够了在关键的环节我们应该显著倾斜更多的资源。这个时候我们需要依赖我们的业务特性做详细的验证和测试对含有大量的数字的json数据与含有大量字符的json数据不同库表现是不一样的。最好的办法是积累大量的线上数据做离线的情况下做验证。有时候这种验证没有办法做因为前置链路在架构设计初期还没有数据所以我们只能被迫回退到选择大概率能完成项目目标的工具。 第三阶段制作最适合的工具。市面上工具是针对大部分问题的通用解决方案。不一定是每个业务的最优解在深入解决业务关键问题的时候认识到问题的本质才能找到最合适的办法。比如在业务中数据协议的作用是让上下游通过确定的协议解析网络的二进制数据那就不要把视野局限在json协议上自定义的二进制协议获取更快。比如业务中传输的一连串idjson格式为{UserIDs: 123,232,4434,2342}。为了极致的性能我们的数据规格可以改为4,123,232,4434,2342代表着有4个id分别是123,232,4434,2342。这里一共是1个2字节的数字加上4个4字节的数字解析的时候按字节解析。虽然我们自己设计的协议不通用不易读但是性能好也就是在业务中我们增加了程序复杂度减少了资源成本。而这里没有最优只有最适合。