本文将在这里介绍如何使用阿里云SAE及其他产品落地Alibaba cloud微服务,搭建一套云原生应用架构,实现Serverless ,CI\CD,Devops,全链路监控,可回滚系统版本,系统自动扩容以及灰度发布的一整套架构,适用于有微服务架构落地的需求.
本人在公司设计并维护的一套Alibaba cloud微服务系统已经线上生产环境考验稳定运行半年,线上20个节点稳定运行,日常线上的维护还可做到服务全链路监控,jvm情况,硬件状况,服务拓扑图,日志收集,流量激增时,可实现自动扩容节点(秒级扩容),且集成了任务调度.
该运维架构配合了我自研的一套轻量级的内部微服务开发sdk,当有新的服务时候,只需要在新建的微服务模块引入该sdk,线上和线下环境即自动构建完成,且集成了swagger(且采用的网关gateway对所有的服务的swagger进行集合),服务降级熔断,限流处理,防xss注入,分布式锁注解,幂等性处理,分布式二级缓存等一系列功能,开发人员无需关心架构问题,能更好的专注于业务的开发,提高编码效率.在这里我不并讨论我开发的这个SDK,因为每个公司的技术情况不同,我们公司是走JAVA技术栈的,我会陆续分享出来一些设计思想 ...后面我会先出一个基于redisson配合caffeine开发的分布式二级缓存的文章,能同步集群应用缓存(jvm缓存),可防止大流量情况下redis穿透及雪崩的风险.这里涉及的要素太多太多了,后面我会一点点分享...
那么说说该架构下日常开发时候的运作情况
1.代码推送到远程仓库后,(可先经过代码审查,即人工卡点)经静态代码分析后,执行单元测试通过后将会自动构建docker镜像并推送至镜像仓库.
2.可手动部署或者控制流水线实现持续集成部署到线上,在这里的CI\CD,Devops流水线我采用的是阿里云的云效.测试环境可配合Jenkins实现.
开发人员只需要提交日常编写的代码即可,因为有了该架构的支撑,产品能够快速的迭代(敏捷开发利器),该架构前期搭建并不吃力,都是阿里云提供好的产品,虽然我踩了很多的坑,Alibaba cloud的,sae的坑(sae是阿里云的serverless产品,前身是edas的一个扩展产品,edas是阿里云的一个企业级分布式应用服务产品),不过好在随着产品的不断完善,很多的问题都得到了官方的回应和改进.因为我是从孵化阶段的Alibaba cloud开始学习,以及实验阶段的sae开始的,在这个过程我也经常在官方钉钉群交流和反馈.
以下是我的架构图:
在这里列举下使用到的阿里云产品
这里有一个很有意思的东西,是我在开发的时候发现的,EDAS和SAE产品的服务注册中心是互通的,可能是因为SAE前身就是EDAS的一个扩展产品,使用了同一个服务注册中心的原因把,所以SAE与EDAS产品可以混合使用!!!即服务部署到两个不同的产品都能互相发现,前提是要做好同一交换机的处理,即使用同一个VPC下的网络
*注意,线上部分产品的使用需要阿里云账号内有余额
SAE
Serverless 应用引擎 SAE(Serverless App Engine)是面向应用的 Serverless PaaS 平台,能够帮助 PaaS 层用户免运维 IaaS、按需使用、按量计费,做到低门槛微服务应用上云。相对于其他 Serverless 产品,它抽象了应用的概念,并提供了一整套微服务解决方案,支持 Spring Cloud、Dubbo、HSF 等主流的微服务开发框架,实现了 Serverless 架构和微服务架构的完美结合。
*对于HTTPS的处理,SAE是直接支持HTTPS的,前提是需要配置好对应的域名证书,配置好转发策略即可
EDAS
企业级分布式应用服务 EDAS(Enterprise Distributed Application Service)是一个应用托管和微服务管理的 PaaS 平台,提供应用开发、部署、监控、运维等全栈式解决方案,同时支持 Spring Cloud、Apache Dubbo(以下简称 Dubbo )等微服务运行环境,助力您的各类应用轻松上云。
专有网络 VPC
专有网络是您自己独有的云上私有网络。您可以完全掌控自己的专有网络,例如选择IP地址范围、配置路由表和网关等,您可以在自己定义的专有网络中使用阿里云资源如云服务器、云数据库RDS版和负载均衡等。
容器镜像服务
容器镜像服务(Container Registry)提供安全的应用镜像托管能力,精确的镜像安全扫描功能,稳定的国内外镜像构建服务,便捷的镜像授权功能,方便用户进行镜像全生命周期管理。容器镜像服务简化了Registry的搭建运维工作,支持多地域的镜像托管,并联合容器服务等云产品,打造云上使用Docker的一体化体验。
云效
云效,一站式企业协同研发云,源于阿里巴巴多年先进的管理理念和工程实践,提供从“需求->开发->测试->发布->运维->运营”端到端的协同服务和研发工具支撑。云效将战略规划、敏捷研发、持续集成、持续交付、DevOps等理念引入银行、保险、民航等大型企业和互联网初创企业,支持公有云、专有云和混合云的协同研发,助力企业产品快速创新迭代和研发效能升级。
由于篇幅过长,我将分成几个部分,一步步实操
1.通过官方demo了解并使用SAE