之前实现了Nginx+uwsgi+daphne+django的生产环境部署,实际上也相当于构建了微服务。
但是如果要将django项目作为微服务部署到云微服务引擎上,还需要做一定的改造。
有几个思路:
- 多语言Mesh应用(华为云中可以用ServiceStage创建Mesher组件,然后部署Mesh应用,阿里云MSE和腾讯云TSF同理只不过没有Mesher)
- SpringCloud+GRPC+Django,然后注册到Nacos上,最后部署到云引擎上。
- 似乎也可以直接将Django项目注册到Nacos?具体不太清楚。
由于现在各大云平台提供的微服务引擎都比较支持SpringCloud且老板要求用Nacos注册中心,采用第二条思路。
Django作为GRPC的服务端https://djangogrpcframework.readthedocs.io/en/latest/index.html
SpringCloud实现GRPC的客户端并注册到Nacoshttps://blog.csdn.net/qq_42097051/article/details/106761395
什么是云原生应用以后尽量使用云原生应用框架来开发项目,最后部署上云可以省去很多麻烦。
引用知乎上腾讯云官方账号对云原生定义的回答:
云原生的定义在行业内可谓百家争鸣,如果给一个通俗的定义,大概是这样:一款应用在设计之初就考虑到如何在云上以最佳方式运行,能以最短路径上云,充分发挥云的优势。换言之,这款应用是因云而生的。
总结一下云原生的优势,大概有以下几点:
1)是更好的资源效率,可以用较少的服务器上运行相同数量的服务
2)云原生基础架构可实现更高的开发速度,从而更快地改善服务,以降低风险
3)云原生允许多云(在公共云之间切换或在多个云上运行)和混合云(在数据中心和公共云之间移动工作负载)
云原生的另一个定义来源是成立于2015年7月的云原生计算基金会(Cloud Native Computing Foundation,CNCF)。起初,CNCF给出的定义以下三方面:
1)应用容器化(Containerized)容器让我们的应用有一种完全自包含的定义方式,应用才能以一种敏捷的可扩展可复制的方式部署到云上,发挥出云的能力
2)动态编排调度(Dynamically orchestrated)由中心化的编排来进行活跃的调度和频繁的管理,从根本上提高机器效率和资源利用率,同时降低与运维相关的成本。
3)面向微服务(Microservices oriented)应用被拆分成微服务,这显著提高了应用的整体灵活性和可维护性
2018年后,CNCF给了另一版定义:
云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。
如果看了这么多内容而有点懵,建议拉回开头看看通俗版本的定义,或许有助于理解。希望这个回答能给你带来帮助。
作者:腾讯云 链接:https://www.zhihu.com/question/63927805/answer/737096504
来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。



