本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
转载自夜明的孤行灯
本文链接地址: https://www.huangyunkun.com/2015/08/15/cloud-native-application-with-lattice/
快,是现在一个很喜欢提的概念。快速发现用户需求,快速的产品原因,快速的提供服务,快速的迭代,快速的部署,快速的试错。
为了满足这些,软件架构和基础服务也在发生改变。
从独立机房到云主机,再到所谓的容器,快速的部署一个具有极大扩展性的应用变得越来越容易,当然费用也是越来越低。
Cloud Native Application
Cloud Native Application,说实话,我不知道中文名字叫什么,先称为云应用(我相信应该有一个更正式的说法)。
从中衍生的还有所谓的 Cloud Native Application Architectures,即云应用体系结构。
简单说来无非是一下几个问题:
- 以一个或多个无状态进程运行应用
- 通过端口绑定提供服务
- 快速启动和优雅终止可最大化健壮性
- 把日志当作事件流
- 其他。。。
应用由小的模块组成,每个模块尽可能无状态,模块能够快速的终止和启动。
更多的相关概念和理论可以参考文木末的免费电子书。
Spring-Boot和Spring-Cloud
以Web应用说明,如果构建成war包然后发布到容器中,那么就很难做到以端口绑定提供服务,多个无状态进程等等。
Spring-Boot提供了一个很简单的思路,如果发布到容器不行,那么就把容器包含在自身,使用内置的jetty或者tomcat来作为服务的承载。
当然Spring-Boot还提供了快速的开发的若干便利,从配置到依赖管理,进而到调试和发布。
Spring-Cloud提供了功能更进一步的“云特性”。
- 配置管理
- 路由
- 负载均衡
- 服务注册和发现
- 集群决策和状态管理
可以说在Spring的大旗之下有超过10个项目或者子项目再为云应用这个理念服务。
Lattice
有了理念,有了工具和框架,自然需要一个平台。
Lattice就是一个为云应用而生的管理平台,主要的功能包括:
- Http负载均衡
- 日志
- 监控
- 集群管理和部署
当然也有一个spring-cloud-lattice。
Lattice目前支持 AWS, Digital Ocean, Google Cloud和Openstack。国内使用较多的阿里云还没有支持。
不过这个支持指的是部署Lattice的功能,你依然可以手动安装在任何主机上使用。
Lattice的部署标准是Docker,意味着你的服务需要适配在Docker中。
对于Spring-Boot的应用而言其实这是非常简单的,即使不使用spring-docker插件,我们也可以自己写Dockerfile。
有了Docker以后我们就可以直接创建应用(群)了。
如果需要扩展应用的时候我们只需要
这样部署了10个服务,由前端的负载均衡负责转发。
当应用出现故障的时候,Lattice也会自动重启。
Lattice提供了命令行工具,大部分时候需要和现有平台接入的话可以直接使用Lattice的API。
参考链接
迁移到云应用架构
12factor
Spring-Cloud
microservices
API-based collaboration
Lattice API
Spring-Docker
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
转载自夜明的孤行灯
本文链接地址: https://www.huangyunkun.com/2015/08/15/cloud-native-application-with-lattice/