阿里中间件技术专家魏鹏:基于Java容器的多应用部署技术实践

本文涉及的产品
性能测试 PTS,5000VUM额度
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 首届阿里巴巴在线技术峰会(Alibaba Online Technology Summit),将于7月19日-21日 20:00-21:30 在线举办。本次峰会邀请到阿里集团9位技术大V,分享电商架构、安全、数据处理、数据库、多应用部署、互动技术、Docker持续交付与微服务等一线实战经验。

首届阿里巴巴在线技术峰会(Alibaba Online Technology Summit),将于7月19日-21日 20:00-21:30 在线举办。本次峰会邀请到阿里集团9位技术大V,分享电商架构、安全、数据处理、数据库、多应用部署、互动技术、Docker持续交付与微服务等一线实战经验,解读最新技术在阿里集团的应用实践。

7月20日晚8点,阿里巴巴集团技术专家魏鹏将在线分享《基于Java容器的多应用部署技术实践》。为了帮助更多技术伙伴了解他,也更加深入了解技术分享的背景,云栖社区对他进行了采访并整理了这篇文章。

阿里巴巴在线技术峰会专题:https://yq.aliyun.com/activity/97
峰会统一报名链接:https://yq.aliyun.com/webinar/join/23


魏鹏,阿里巴巴集团技术专家。2009 年硕士研究生毕业加入阿里巴巴中国网站技术部,曾担任中国网站交易平台架构师,主导了交易系统服务化工作,设计实现的数据迁移系统高效的完成了阿里巴巴中国网站交易数据到阿里巴巴集团的迁移工作。目前在阿里巴巴中间件技术部的应用容器与服务框架组从事 Java 应用容器 Pandora 和服务框架 HSF 的相关工作,其中 Java 应用容器 Pandora 是阿里巴巴中间件运行的基础,而服务框架 HSF 则是阿里巴巴集团实现服务化的主要解决方案,二者在阿里巴巴拥有最为广泛的使用量。

技术提升“三件事”:从普通到创新,从被动到主动,从现在到未来

云栖社区:您自2009年硕士毕业就加入阿里,能和我们分享下您一路走来的技术之路吗?有哪些值得纪念的里程碑?

魏鹏:分享技术之路不敢这么说,我就是感觉公司和团队能够给予你很多机会去做自己喜欢的事,能做自己喜欢和认可的事情是非常幸福的。

我这里不去详细讲述这些年的工作,只说三件事吧:

第一个,从普通到创新;记得当时刚加入阿里在1688交易团队工作,主管交给我一个改造任务:将现有的消息组件迁移到公司新开发的分布式消息组件上。一个普通的迁移工作只是改动一下既有的代码看起来非常简单,但是经过分析,发现现有的交易消息系统设计的不利于未来业务的扩展,便有了改造已有消息系统的想法,经过和团队同学们的沟通,新设计的消息系统除了能够支持已有的业务以外,还简化了新业务的接入过程。其实如果带着审视的眼光去看简单而又普通的工作,兴许就会发现许多可以改善和创新的地方。

第二个,从被动到主动;在2012年做1688交易服务化工作的开始阶段,总会想所做的工作能够有多大的价值,后来发现所做工作最大的价值在于用户对你的肯定。因此我们从开始被动的接受需求完成开发,到主动的找寻系统数据上有价值的点进行服务提供,服务化工作在顺利的推进过程中,和其他业务方的配合也变得越发的顺畅。

第三个,从现在到未来。2013年底来到中间件技术部之后,开始接触中间件产品,和一群技术非常牛X的小伙伴们一起工作,这个过程充满了乐趣。由于负责的产品大都是技术产品,使用的对象都是公司内部的工程师,所以很多技术细节的取舍、产品的设计都必须非常仔细,因为我们的角色不仅仅是开发也是产品经理,对自己的要求变得更高。在中间件工作,你的一个想法可能会改变非常多工程师的开发方式和使用习惯,因此在中间件工作感觉就像面向未来工作。

中间件技术就像“一座桥”:要稳、要宽、跨度大

云栖社区:您目前在阿里中间件技术部,可以简要介绍下阿里中间件的研发初衷和历程吗?现阶段发展如何?

魏鹏:按照我的理解,当阿里开始尝试使用自己的分布式技术时,阿里中间件的雏形就开始出现了,它研发的初衷就是从用户角度出发,将分布式技术带给我们的开发同学,让他们能简单、安全并可靠的使用分布式技术(比如:RPC框架HSF、分布式数据访问层TDDL和分布式消息系统Notify等)。

现阶段阿里中间件是阿里巴巴集团生态系统的技术基石,为集团各大业务群提供可靠、高效、易扩展的技术基础服务。这里有世界一流的中间件产品和场景,这里有世界最大的电商交易业务场景,这里有世界领先的企业互联网架构平台。阿里中间件的愿景是打造世界一流的中间件产品,打造世界一流的高可用架构基础设施,打造世界一流的企业级互联网架构平台。

云栖社区:中间件从起源之时到伴随着互联网发展和分布式系统的兴起,中间件的概念也在发生演变,那么您是如何理解中间件技术的?

魏鹏:在我的理解里,中间件技术像一座桥,它联通着业务的现在和未来,能够为业务提供更加方便、安全、可靠和高效的解决方案,使业务能够不在受限于技术和规模的限制,提供给业务更加稳定的支撑。衡量一座桥,首先看它稳不稳,然后再看宽不宽,最后看跨度够不够大。中间件这座桥一定需要稳,因为它是技术基石;同时它也需要很宽,因为它需要高效的解决一些通用问题;最后它的跨度要大,因为它需要面向未来支撑更大的量级。

云栖社区:在中间件大团队中,您主要是做哪些方面的工作?主要成就有哪些?

魏鹏:我目前在中间件技术部-基础中间件-应用容器与服务框架小组,主要负责隔离容器Pandora和服务框架HSF的开发工作。所负责的Pandora与HSF的架构演进,立足现有的产品,面对未来的挑战,通过架构演进来应对挑战。

业务发展带来“四大”系统问题:性能、成本、效率、扩展

云栖社区:首届阿里巴巴在线峰会上,您分享的主题是《基于Java容器的多应用部署技术实践》。核心技术内容有哪些?什么样的用户适合来倾听本场分享?

魏鹏:随着业务的发展,机器的数量和系统复杂性不断提升,较之简单系统的开发部署,大规模分布式系统将会面对以下新问题:

  • 性能问题,系统之间通过远程调用来进行数据交换,一个用户请求所涉及的系统越来越多,远程调用的开销随之变大,如何降低远程调用开销,提升调用链路稳定性;
  • 成本问题,系统服务器数量不断增加,单个集群规模变大的同时带来了资源的浪费,如何提升资源利用率,优化成本;
  • 效率问题,拥有上千台服务器的系统,在每次发布过程中容易造成客户端的抖动,常规做法是多批少量发布,但这种发布方式延长了发布时间,如何能做到大集群快速全量发布;
  • 扩展问题,平台化系统对模块化有很强的需求,现行的Java模块化技术对于开发者而言显得过于复杂,如何降低模块化技术门槛,适合已有的运维部署体系。

阿里Java容器,能够支持多应用部署并将阿里中间件以服务的形式提供给托管的应用,应用之间的调用从远程自动转换为本地调用,以淘宝商品详情为例,综合对比性能提升40%以上,对外服务能力不变的情况下,节约近千台服务器。在提升性能、降低成本的同时,容器支持主子应用部署的形式使得平台化系统的搭建变得简单许多,平台方和下游业务方的部署变得更加灵活自由。容器还支持单应用多版本部署,使得应用发布时不再重启进程,而是做应用版本的上下线以及流量的切换,发布和系统规模束缚被打破,整个发布过程进入分钟级。

对Java中间件、应用容器、服务框架以及运维感兴趣同学都适合听。

技术成长之道:重在积累

云栖社区:我们了解到,您本人平时喜欢阅读技术书籍,与同事合著了《Java 并发编程的艺术》一书,并翻译一些国外优秀文档,对 Java 应用容器、多线程编程以及分布式系统感兴趣,对于广大开发者们的成长,您有哪些建议?或者请您推荐一本最喜欢的技术书籍(或书单)?

魏鹏:技术在平时工作中的运用来自于平时自己的积累,就像我在做1688交易数据迁移工作时一样,由于自己平时对于多线程编程非常感兴趣,做了一些积累,当问题真正来临之时,平日的积累就给了自己非常多的帮助,能够更好的完成系统的设计和开发,让自己体会到学有所用的乐趣。

我最喜欢的技术书籍是读书时候看的《Beginning Java Objects》,很喜欢那时看完每章都觉得收获颇丰的感觉。


7月20日晚8点,欢迎分享到朋友圈,不见不散!

1573fa3f3ab373a493f2be1cff18c3247ea6e813"

议题:《基于Java容器的多应用部署技术实践》

议题简介:随着业务的发展,机器的数量和系统复杂性不断提升,较之简单系统的开发部署,大规模分布式系统将会面对以下新问题:

  1. 性能问题,系统之间通过远程调用来进行数据交换,一个用户请求所涉及的系统越来越多,远程调用的开销随之变大,如何降低远程调用开销,提升调用链路稳定性;
  2. 成本问题,系统服务器数量不断增加,单个集群规模变大的同时带来了资源的浪费,如何提升资源利用率,优化成本;
  3. 效率问题,拥有上千台服务器的系统,在每次发布过程中容易造成客户端的抖动,常规做法是多批少量发布,但这种发布方式延长了发布时间,如何能做到大集群快速全量发布;
  4. 扩展问题,平台化系统对模块化有很强的需求,现行的Java模块化技术对于开发者而言显得过于复杂,如何降低模块化技术门槛,适合已有的运维部署体系。

阿里Java容器,能够支持多应用部署并将阿里中间件以服务的形式提供给托管的应用,应用之间的调用从远程自动转换为本地调用,以淘宝商品详情为例,综合对比性能提升40%以上,对外服务能力不变的情况下,节约近千台服务器。

在提升性能、降低成本的同时,容器支持主子应用部署的形式使得平台化系统的搭建变得简单许多,平台方和下游业务方的部署变得更加灵活自由。容器还支持单应用多版本部署,使得应用发布时不再重启进程,而是做应用版本的上下线以及流量的切换,发布和系统规模束缚被打破,整个发布过程进入分钟级。

听众受益:

  1. 阿里Java容器的整体架构与部署形式;
  2. 如何转换远程调用到本地调用,提升性能,优化成本;
  3. 如何通过多版本部署来提升发布效率;
  4. 如何支撑应用平台化。

附图:阿里巴巴在线技术峰会整体议程

8ca125440fcce3b5bdad1d15f41b2263565b3f89

峰会统一报名链接:https://yq.aliyun.com/webinar/join/23

相关文章
|
5天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
25 2
|
11天前
|
设计模式 安全 Java
Java编程中的单例模式:理解与实践
【10月更文挑战第31天】在Java的世界里,单例模式是一种优雅的解决方案,它确保一个类只有一个实例,并提供一个全局访问点。本文将深入探讨单例模式的实现方式、使用场景及其优缺点,同时提供代码示例以加深理解。无论你是Java新手还是有经验的开发者,掌握单例模式都将是你技能库中的宝贵财富。
16 2
|
8天前
|
存储 安全 Java
Java多线程编程的艺术:从基础到实践####
本文深入探讨了Java多线程编程的核心概念、应用场景及其实现方式,旨在帮助开发者理解并掌握多线程编程的基本技能。文章首先概述了多线程的重要性和常见挑战,随后详细介绍了Java中创建和管理线程的两种主要方式:继承Thread类与实现Runnable接口。通过实例代码,本文展示了如何正确启动、运行及同步线程,以及如何处理线程间的通信与协作问题。最后,文章总结了多线程编程的最佳实践,为读者在实际项目中应用多线程技术提供了宝贵的参考。 ####
|
4天前
|
监控 安全 Java
Java中的多线程编程:从入门到实践####
本文将深入浅出地探讨Java多线程编程的核心概念、应用场景及实践技巧。不同于传统的摘要形式,本文将以一个简短的代码示例作为开篇,直接展示多线程的魅力,随后再详细解析其背后的原理与实现方式,旨在帮助读者快速理解并掌握Java多线程编程的基本技能。 ```java // 简单的多线程示例:创建两个线程,分别打印不同的消息 public class SimpleMultithreading { public static void main(String[] args) { Thread thread1 = new Thread(() -> System.out.prin
|
6天前
|
Kubernetes Cloud Native Docker
云原生技术探索:容器化与微服务的实践之道
【10月更文挑战第36天】在云计算的浪潮中,云原生技术以其高效、灵活和可靠的特性成为企业数字化转型的重要推手。本文将深入探讨云原生的两大核心概念——容器化与微服务架构,并通过实际代码示例,揭示如何通过Docker和Kubernetes实现服务的快速部署和管理。我们将从基础概念入手,逐步引导读者理解并实践云原生技术,最终掌握如何构建和维护一个高效、可扩展的云原生应用。
|
7天前
|
Cloud Native 持续交付 Docker
Docker容器化技术:从入门到实践
Docker容器化技术:从入门到实践
|
8天前
|
存储 Kubernetes 调度
基于容器化技术的性能优化实践
基于容器化技术的性能优化实践
18 3
|
9天前
|
SQL Java 数据库连接
从理论到实践:Hibernate与JPA在Java项目中的实际应用
本文介绍了Java持久层框架Hibernate和JPA的基本概念及其在具体项目中的应用。通过一个在线书店系统的实例,展示了如何使用@Entity注解定义实体类、通过Spring Data JPA定义仓库接口、在服务层调用方法进行数据库操作,以及使用JPQL编写自定义查询和管理事务。这些技术不仅简化了数据库操作,还显著提升了开发效率。
21 3
|
8天前
|
Java UED
Java中的多线程编程基础与实践
【10月更文挑战第35天】在Java的世界中,多线程是提升应用性能和响应性的利器。本文将深入浅出地介绍如何在Java中创建和管理线程,以及如何利用同步机制确保数据一致性。我们将从简单的“Hello, World!”线程示例出发,逐步探索线程池的高效使用,并讨论常见的多线程问题。无论你是Java新手还是希望深化理解,这篇文章都将为你打开多线程的大门。
|
16天前
|
Kubernetes 负载均衡 Cloud Native
云原生应用:Kubernetes在容器编排中的实践与挑战
【10月更文挑战第27天】Kubernetes(简称K8s)是云原生应用的核心容器编排平台,提供自动化、扩展和管理容器化应用的能力。本文介绍Kubernetes的基本概念、安装配置、核心组件(如Pod和Deployment)、服务发现与负载均衡、网络配置及安全性挑战,帮助读者理解和实践Kubernetes在容器编排中的应用。
47 4