首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

程序员们的福音,微服务的未来发展趋势真的是云原生应用架构吗?

微服务发展趋势

随着Docker技术的普及和Kubernetes在互联网公司的大量部署与使用,微服务架构正在围绕应用如何易于开发交付、减少资源消耗、无侵入治理等方面进行变革和演进。

本篇我们将讲解云原生架构、Service Mesh技术、无服务器架构(Serverless)技术。

云原生应用架构

云原生应用架构的3个特征包括:容器化、微服务、DevOps。

通俗地讲,就是将现代应用基于微服务架构原则(云原生12因子)构建,使用DevOps开发运维一体化的动态管理机制,将微服务自动化部署在私有云或者公有云。

云原生应用架构进阶

Pivotal是云原生应用的提出者,推出了Pivotal Cloud Foundry云原生应用平台和Spring开源微服务框架。

近几年,随着云原生生态的不断发展壮大,Google主导成立的云原生计算基金会对云原生做了重新定义:

云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。

云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。

CNCF对云原生的定义从Cloud和Native两个方面进一步阐述。

一方面,强调Cloud代表着应用的运行时,运行环境基于私有云、公有云或者混合云等,有别于传统的数据中心机房环境。

另一方面,Native应用是适合云环境的微服务程序,这些微服务程序更加适合运行在云端环境。

下面我们从应用、平台、组织流程等不同视角来看云原生应用架构的演进过程,以及云原生架构相比传统应用软件开发模式的组织特征和架构特性,示意图如下。

从云平台搭建开始

云平台相比传统的IT运维方式具备成本低、弹性、可靠性、便捷性等特性,而这些显而易见的优势都成为企业转型使用云平台的重要因素。

业务微服务化转型

企业进行云原生架构转型的核心动力是快速响应业务的需求和变化。传统的单体架构成为业务发展的羁绊,微服务给应用开发及部署带来了极大的灵活性和可扩展性。

持续的价值交付

持续交付需要基于DevOps方法论,结合持续集成和持续部署(CI/CD)过程完成应用持续的价值交付,从而使业务能从云原生技术架构中得到持续的价值收益。

Java的云原生应用优化

云原生应用围绕性能(Performance)、稳定性(Stability)、安全(Security)、扩展性(Scalability)等特性持续迭代演进。

在企业应用开发领域,使用Spring Boot为代表的开发框架作为云原生应用开发框架,依然处于主流地位,但是同样存在诸多劣势。

我们可以从以下几个方面考虑优化应用性能。

编译速度优化

Spring Boot在2.3.0.M1版本中对默认的编译工具进行了重大更改,使用Gradle而非Maven作为构建项目的主要代码管理工具。SpringBoot团队考虑切换到Gradle的主要原因是减少构建项目所需的时间,提升编译的效率。

相比Maven,Gradle在依赖管理、多模块构建、插件机制等多方面特性都有更加显著的优势。Gradle使用XML方式进行配置,把“约定大于配置”的设计理念进一步发扬光大,最重要的是并行化的编译速度有显著的提升。

镜像瘦身

交付物打包体积的大小直接影响镜像的分发和传输速度,通过对Docker镜像瘦身,可以显著提升构建交付物的效率。

分阶段构建则通过将构建环境和运行环境分离,减少上述构建产生的镜像冗余问题。下面列举了使用两阶段进行打包构建的方式。

从上述DockerFile可以看到,我们将镜像构建分成两个阶段。

构建(Build)阶段依然采用JDK作为基础镜像,并利用Maven进行应用构建。

发布镜像阶段,我们采用JRE作为基础镜像,并从“Build”镜像中直接复制出生成的打包文件。在发布镜像阶段,不包含任何编译时的依赖,减少了镜像体积。

提升启动速度

JVM 9引入了AOT编译方式,它会将JVM编译结果保存在SCC中,在后续JVM启动中可以直接重用。与启动时进行的JIT编译相比,从SCC加载预编译的实现要快得多,而且消耗的资源更少,启动时间也得到明显改善。使用方式就是在OpenJDK的启动参数中增加参数配置:

-Xshareclasses开启SCC,-Xquickstart开启AOT。从测试结果来看,使用OpenJDK的SCC和AOT特性启动速度提高了50%;而JVM资源占用也减少了400MB左右。

Java云原生框架探寻

Java云原生框架在社区中出现了一些技术框架的探索,其中比较典型的代表是Quarkus和Micronaut。二者都可以运行在GraalVM上。

GraalVM使AOT编译成为可能,将字节码转换为本地机器代码,从而产生可以本地执行的二进制文件。

本文给大家讲解的内容是微服务发展趋势,云原生应用架构

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20220922A00OQN00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券