Q:老师,您好!在您看来,NGINX 和 OpenNJet 在云原生方面有哪些共性和区别呢?在选择应用引擎时,我们应该考虑哪些关键因素?
A:共性实际上在官网及别的回复中有过描述,因为 NJet 最初的代码树来源于 NGINX ,可以使用相同的配置模式进行维护。区别在于 NJet 实现了 CoPilots ,动态配置框架,并对模块做了动态化改造,这种改造是扩展、新增,而不会变更原有实现的逻辑及含义。所以 NGINX 是可以自然,无需改造迁移到 NJet 上的。选择 NJet ,最关键的点是在某些特殊的客户场景下,是需要 7×24 业务无间断。
虽然 NJet 把 7*24 作为切入点。但我们在选择引擎,或其他基础设施时,需要的更多是业务分析。比如我们的业务,可以容忍临时的中断,在线率只需 99%或 99.9%.那就可以不为性能作为切入点,而是重点考虑运维的友好度、扩展性等等。泛泛而谈,我认为有三点是需要考虑的:
首先是避免成为单点,至少需要支持主备的架构,能够尽量快的实现故障的 failover;额外的,则需要实现水平扩展能力,因为一个节点的硬件资源总是有限的。
另外,则是尽量内聚,对于较基础的组件,如果依赖太多的外部组件实现特定功能,一是不利于运维,需要这些额外组件的知识体系的学习;在云环境中,还有可能导致特定基础设施的绑定。比如我们也看到,很多的有效的业务组件,离开了 amazon s3/google bigtable 就无法运行,实际限制了在目前越来越流行的私有云中的应用。
最后一点,则是扩展性。尤其在私有云环境中,我们面临的协议千差万别,甚至还有些古老的协议要支持,像 tuxedo 等。那么实际我们需要大量的实施、交付人员,在现场针对这些特定的协议或需求进行开发。这块业界基本上也有成型的做法,采用嵌入式语言来做。从最早的 TCL ,到 LUA/JS/python ,支持哪种语言,还是要看面临的常见,所以游戏类 LUA 比较频繁,而进行算法处理的,python 比较多。
最近搞了个问答栏目,陆续放点我们的 Q&A 出来,欢迎使用了解 OpenNJet ~ 官网: https://njet.org.cn/ 主仓: https://gitee.com/njet-rd/njet?_from=gitee_search
1
keepRun 331 天前
希望国内的开放原子基金会发展成跟 apache 一样影响力的组织吧,省的中国人还得跑到国外去开源。
|
3
keepRun 331 天前
推动国内开源,能够让国内技术体系更加完善,不至于受制于人,国内有实力的程序员也能够更方便贡献自己的力量。
|
4
keepRun 331 天前
@Gerbner 建议介绍项目多加点通俗易懂、能够快速上手的内容,一开始大家关注某项技术肯定希望能够快速拿来用,甚至提供个 dockerfile 来快速搭建项目也挺好的,方便上手才更好推广
|
6
Gerbner OP @keepRun 终于,OpenNJet 2.0.1 支持 docker 方式运行!
镜像名称为 tmlake/njet:2.0.1 。使用 docker run -d --rm --cap-drop=ALL --cap-add=cap_dac_override --cap-add=cap_dac_read_search --cap-add=cap_setuid --cap-add=cap_net_bind_service --cap-add=cap_net_admin --cap-add=cap_net_raw --cap-add=cap_setgid --cap-add=cap_audit_write tmlake/njet:2.0.1 启动容器。 欢迎您再体验,多多提问题~ |