微服务架构调整,迈向12因素应用,包括以下十个方面:1.代码与配置分离,一份代码多个分支、多分配置。对应因素1。2.配置文件管理服务间的依赖关系。对应因素2。3.服务无状态。对应因素6。真正实施过程中中虽然整体功能微服务化,但有些服务由于做的时候不注意,或多或少会引入状态的存在,这时要把状态去掉。4.通过RestAPI提供服务。对应因素7。5.去单点。对应因素8。6.统一日志,JSON格式,输出到控制台。对应因素11。7.单一进程。这是Docker的推荐。8.API向前兼容,支持滚动升级。为了实现在k8s里面滚动升级的需求,无状态的服务在升级过程中都有一个短暂的新老版本并存的时 在运维微服务系统的过程中,尤其是通过Kubernetes(k8s)进行管理,实践中的关键点主要涉及12因素应用原则的实现。以下是这些实践要点的详细解析: 1. **代码与配置分离**:代码和配置分开管理,允许通过不同的配置分支服务于不同的环境,如开发、测试和生产。 2. **配置文件管理依赖**:配置文件用于定义服务间的依赖关系,使得服务间通信清晰,易于管理和维护。 3. **服务无状态**:微服务设计应尽可能保持无状态,确保服务的可伸缩性和高可用性。如果服务中存在状态,需将其剥离或利用外部存储来管理。 4. **RESTful API**:通过RESTful API提供服务接口,遵循HTTP协议标准,便于服务间的通信和集成。 5. **去单点**:消除单点故障,确保系统中任何单一组件的失效不会导致整个系统崩溃。 6. **统一日志**:使用JSON格式的日志输出,统一收集和分析,提高故障排查效率。 7. **单一进程**:Docker推荐每个服务运行在一个单独的进程中,确保服务的独立性和隔离性。 8. **API向前兼容**:设计API时考虑兼容性,允许滚动升级,即新老版本并存期间,确保服务不中断。 9. **监控探针接口**:提供健康检查探针,以便k8s能检测服务状态,及时隔离故障节点。 10. **线程池优化**:手动干预线程池管理,避免框架默认线程池带来的性能问题。 在k8s的高可用部署架构中,通常设置3个主节点,并可根据需求横向扩展。核心组件包括kubelet、kube-proxy、Docker和网络插件(如Flannel),所有应用业务运行在Nodes上。为了处理流量,会配置多个入口,如EIP和NAT,确保不同环境和服务的访问。 产品容器化结构上,每个产品线被划入单独的命名空间,以实现资源隔离。服务由Serves组成,通过服务发现机制暴露对外接口。在持续集成自动化发布测试流程中,分为开发、编译、预发布、测试和部署5个阶段,确保版本的一致性和质量。 自动化测试架构包括预部署、生产区和测试区,测试结果保存在ES中供CI/CD系统检查。镜像的编译打包则通过分离代码和镜像存储,实现高效的构建和部署。 通过以上实践,可以有效地运维微服务系统,提高系统的稳定性和灵活性,同时优化资源利用率,降低运维成本。
- 粉丝: 1
- 资源: 939
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- shopex升级补丁只针对 485.78660版本升级至485.80603版本 其它版本的请勿使用!
- 基于Django和HTML的新疆地区水稻产量影响因素可视化分析系统(含数据集)
- windows conan2应用构建模板
- 3_base.apk.1
- 基于STM32F103C8T6的4g模块(air724ug)
- 基于Java技术的ASC学业支持中心并行项目开发设计源码
- 基于Java和微信支付的wxmall开源卖票商城设计源码
- 基于Java和前端技术的东软环保公众监督系统设计源码
- 基于Python、HTML、CSS的crawlerdemo软件工程实训爬虫设计源码
- 基于多智能体深度强化学习的边缘协同任务卸载方法设计源码