1、语法
Python的语法使用缩进来指示代码块。Go的语法基于打开和关闭括号。
2、范例
Python是一种基于面向对象编程的多范式,命令式和函数式编程语言。它坚持这样一种观点,即如果一种语言在某些情境中表现出某种特定的方式,理想情况下它应该在所有情境中都有相似的作用。但是,它又不是纯粹的OOP语言,它不支持强封装,这是OOP的主要原则之一。
Go是一种基于并发编程范式的过程编程语言,它与C具有表面相似性。实际上,Go更像是C的更新版本。
3、并发
Python没有提供内置的并发机制,而Go有内置的并发机制。
4、类型化
Python是动态类型语言,而Go是一种静态类型语言,它实际上有助于在编译时捕获错误,这可以进一步减少生产后期的严重错误。
5、安全性
Python是一种强类型语言,它是经过编译的,因此增加了一层安全性。Go具有分配给每个变量的类型,因此,它提供了安全性。但是,如果发生任何错误,用户需要自己运行整个代码。
6、管理内存
Go允许程序员在很大程度上管理内存。而,Python中的内存管理完全自动化并由Python VM管理;它不允许程序员对内存管理负责。
7、库
与Go相比,Python提供的库数量要大得多。然而,Go仍然是新的,并且还没有取得很大进展。
8、速度:
Go的速度远远超过Python。
为什么突然又绕到了apisix,其实是因为调研nginx-ingress就很容易联想到是不是要替换为其他网关ingress实现,比如apisix-ingress,进而想到的肯定是apisix;这些概念到底有什么区别?
apisix 和 apisix-ingress-controller: apisix是一套体系,apisix-ingress-controller是k8s环境下基于go语言开发的一套自定义CRD,他负责响应apisix自定义资源的创建,监听k8s服务资源的创建变更,同步到apisix网关,apisix网关本身由openresty、nginx组成,主要是由Lua语言在nginx执行的各个阶段插入钩子,实现动态化,且基于etcd+灵活的插件机制,让变更更灵活且立即生效;
nginx-ingress和apisix-ingress-controller: nginx-ingress是k8s体系中目前使用最广的路由网关,比如阿里默认的控制台ingress创建就是使用的它;他集合了nginx+nginx-ingress-controller,拉代码可以看出,nginx-ingress-controller完成了与k8sapiserver交互,获取最新的服务配置变更,生成最新nginx配置,除此之外的通讯机制是通过Httppost请求将变更通知到到luanginx侧,ngx.timer在balancer中通过定时器进行动态化
apisix-ingress-controller监控k8s服务变更、自定义CRD及资源创建、将配置同步到apisix;网络请求通过apisix网关作为入口,通过apisix-ingress-controller同步k8s的上游变更
apisix比其他的有啥好?插件灵活,功能多,周边