关于java微服务架构实践,只懂docker与spring
关于java微服务架构实践,只懂docker与spring boot就够了吗?
boot就够了吗?
Docker 是一个开放源代码软件项目,让应用程序布署在软件容器下的工作可以自动化进行,docker的出现可以解决了环境的一致性,比如我们有开发环境、测试环境、生成环境、有时候我们的代码明明在测试环境运行的好好的,怎么一到生产就不行了。所以有时候测试说你的代码出现bug了,程序员的第一反应就是你的环境不对吧。docker的出现就可以,从测试到生产我们都用一样的jdk、MySQL等。大大的简化了程序的部署。
微服务架构
微服务一般应该有服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,所以要实践微服务的架构可以从以上模块去开始。
springcloud也要啊
你怕是没听过k8s和spring cloud
两个都只是工具而已,真的的微服务需要自己设计,可参考springcloud架构,根据自己的实际业务需求进行微服务开发。
一般分布式解决方案有两种,springcloud全家桶,或者zookeeper dubbo,docker的话确实用来做集群比较方便,但是小公司貌似都没怎么用这个东西。
helm使用教程?
helm是目前Kubernetes服务编排领域的唯一开源子项目,作为Kubernetes应用的一个包管理工具,可理解为Kubernetes的apt-get / yum,由Deis 公司发起,该公司已经被微软收购。
helm通过软件打包的形式,支持发布的版本管理和控制,很大程度上简化了Kubernetes应用部署和管理的复杂性。
随着业务容器化与向微服务架构转变,通过分解巨大的单体应用为多个服务的方式,分解了单体应用的复杂性,使每个微服务都可以独立部署和扩展,实现了敏捷开发和快速迭代和部署。
但任何事情都有两面性,虽然微服务给我们带来了很多便利,但由于应用被拆分成多个组件,导致服务数量大幅增加,对于Kubernetest编排来说,每个组件有自己的资源文件;
并且可以独立的部署与伸缩,这给采用Kubernetes做应用编排带来了诸多挑战:
管理、编辑与更新大量的K8s配置文件
部署一个含有大量配置文件的复杂K8s应用
分享和复用K8s配置和应用
参数化配置模板支持多个环境
管理应用的发布:回滚、diff和查看发布历史
控制一个部署周期中的某一些环节
发布后的验证
helm把Kubernetes资源打包到一个chart中,而chart被保存到chart仓库。
通过chart仓库可用来存储和分享chart。
helm使发布可配置,支持发布应用配置的版本管理,简化了Kubernetes部署应用的版本控制、打包、发布、删除、更新等操作。