开源中间件通讯(创始卷,第2期)

Posted 开源中间件

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了开源中间件通讯(创始卷,第2期)相关的知识,希望对你有一定的参考价值。

开源中间件通迅小报试刊。

汇集整理业界重要的开源中间件技术新闻,不定期分享业界观察,好书精要,优秀培训资料,技术文章和大会主题内容。

帮助开发者掌握一手的知识和技术动向。



技 术 新 闻


Eclipse 发布MicroProfile 3.0规范


MicroProfile(https://microprofile.io/)是Java社区针对微服务架构提出来的规范集合。


当时在Oracle对Java EE的态度并不确定,Java开发者社区借鉴来自Netflix开源的若干Java微服务组件,以及Spring Cloud项目。对微服务开发中遇到的跨进程要考虑的技术因素进行归纳,结合若干Java EE的基础规范,组成一个面向微服务开发的规范集合。


MicroProfile规范,简单来说可以分为两大部分:

  • 基本规范。在组件部分使用CDI规范,进行Java对象之间的动态注入。Web使用JavaRS提供Rest数据访问。定义了RestClient获取下层数据,没有定义JPA等数据层技术规范。Rest数据访问采用javax名域的JSONP/JSONB规范。对于配置项的处理,MicroProfile使用Config规范,可以读取来自属性文件,系统环境变量等等的配置信息。

  • 微服务相关。包括Metrics性能测量,Health Check健康度检测,JWT Propagation安全令牌传递,Fault Tolerance容错处理,Open Tracing跟踪信息,OpenAPI开放API规范等。


3.0版本中,没有加入和更新较大特性,这个版本可以看成是一段时期技术工作的总结性发布,

为下一步的针对Reactive数据库, Event数据处理,LRA长事务操作,Service Mesh服务边界接口,GraphSQL等众多新内容做好准备。


在Jakarta EE未在授权方面达成一致前,很难进行代码变动,新的功能放到MicroProfile中是个不错的主意。Jakarta EE和MicroProfile作为Eclipse下面的两个规范集,未来进行融合也是自然而然。



Wildfly 17发布


RedHat JBoss应用服务器Wildfly发布了版本17,应该算是Quarkus项目推出JBoss开发组调整后的首次发布。


Wildfly继续在云端特性不断改进,开发了Wildfly Operator的第一个版本,并发布在operatorhub.io网站上。

Operator可以看作目前是Kubernetes的通用扩展机制,kubectl可以直接管理Wildlfy服务器和其部署在云上的应用。

从16版本开始,Wildfly提供了Galleon打包机制,用户可以构建含有不同特性的安装包,进一步构建出不同的容器镜像包。

在Openshift Launch网站上,开发者可以选择几种常用的运行时框架,Wildfly包含其中,此外还有SpringBoot, Vertx, Nodejs. .NET core等。


Wildfly 17在集群方面有很多特性加强:

  • 可以使用独立的子系统来配置分布式的web session,帮助开发者更好的配置集群。

  • 可以利用基于Hotrod协议的分布式Infinispan来管理缓存。

  • 使用HA Singleton服务的应用,可以注册监听器来收到通知,比如在服务开始和结束时,集群节点被选举成为首要提供者等。


消息方面的加强有:

  • 支持在http负载均衡后面配置消息集群,这样消息客户端可以直接定位负载均衡器,而不用考虑后面的服务器。

  • 嵌入的消息broker打开日志文件的超时时长可以配置。

  • 远程AMQ broker的连接配置加强。


其他还有:

  • 访问日志的JSON格式自由定制

  • Elytron JDBC的安全realm支持对hash,密码和加盐进行编码

  • HAL管理控制台的页面题目可以自行定义

  • 可以配置服务器端的EJB interceptor

  • 部署描述文件由wildfly-core来解析

  • CLI工具可以获取Let's Encrypt的服务端证书


Wildlfy 17 已经支持JDK 12,目前支持的JDK版本有8,11,12



维护了当前所有JDK下载的页面


https://jdk.dev/download/


包括了目前 Java 领域知名公司和组织维护的JDK下载页面:

  • Oracle JDK(商业版本)

  • Oracle OpenJDK

  • Red Hat OpenJDK 

  • Azul Zulu

  • AdoptOpenJDK

  • Amazon Corretto

  • SAP SapMachine

  • BellSoft Liberica JDK

以上基本都是基于OpenJDK的厂商或组织支持版本


另外还有一个JDK相关方案归总:

  • GraalVM (支持各种语言的高级虚拟机,如javascript, Python, Ruby, R, JVM基础语言Java, Scala, Kotlin, Clojure, LLVM基础语言C, C++,支持AOT)

  • 基于Eclipse OpenJ9的AdoptOpenJDK版本

  • Azul的Zing,商业版本还有C4编译器

  • 阿里的Dragonwell 8

  • GNU IcedTea (JamVM 和 CACAO虚拟机)

  • Aleksey Shipilev的二进制编译包


Pivotal Spring runtime


Pivotal公司宣布了Spring runtime的官方支持。包括的技术有:

  • Pivotal 的 OpenJDK发行版。基于AdodtOpenJDK,签署了白金技术支持协议。

  • Spring的支持,包括Spring框架,Spring Boot,Spring Cloud,Spring Cloud Dataflow等

  • Tomcat的支持,即tc Server服务器。提供了配置模板,诊断工具和集群方案,安全性保证。


值得关注的是,在衡量支持范围指标上,除了常用的CPU核心数,加入了Kubenetes Pod数目。

目前为每年50个Pod,支持价格为25K美金,而8核服务器每年支持价格是4K美金。


这个价格定义很值得琢磨:

从数值上看,8核每年4K,也就是48核24K,和50Pod每年25K基本一致。所以这两种报价是类似的。

但50个Pod的打包价,要远高于CPU核数打包报价。也就是对于云端部署,一般认为规模是更大的。


Kubernetes逐渐成为容器化部署标准,厂商也给出了基于Pod的报价方案,但在实际操作如何真实衡量使用量,即一方面架构师拆分微服务为细粒度,另一方面又基于服务化的容器来收取支持费用,微服务粒度的大小,需要进一步探讨。



业 界 观 察


Azure Kubernetes 服务中国区可用


微软云服务Azure,宣布其Kubernetes服务在中国区提供服务,包括东2区和北2区。

(https://azure.microsoft.com/en-us/updates/general-availability-azure-kubernetes-service-in-china-china-east2-and-china-north2/?WT.mc_id=aksch-twitter-jagord)


尽管Azure Kubernetes早已在全球很多区域提供服务,但还是首个国内大陆范围的共有云Kubernetes服务。

(https://azure.microsoft.com/en-us/global-infrastructure/services/?products=kubernetes-service&regions=non-regional,us-east,us-east-2,us-central,us-north-central,us-south-central,us-west-central,us-west,us-west-2,china-non-regional,china-east,china-east-2,china-north,china-north-2,japan-east,japan-west,korea-central,korea-south,asia-pacific-east)


亚马逊云也还没有在国内开通EKS 

(AWS全球区域服务表  https://amazonaws-china.com/cn/about-aws/global-infrastructure/regional-product-services/)


另外谷歌云不用说,没有入华时间表。国内的阿里云,腾讯云,华为云等已经有了Kubernetes云服务。相信公有云服务中,基础服务和基于Kubenetes会成为企业云计算的主要选择。



培 训 资 料


一个非常好的免费Java培训课程


网址 https://testautomationu.applitools.com/java-programming-course/


梳理到位的课程大纲,覆盖了Java基础知识:

  • 编程和算法综述

  • Java基础

  • 条件判定If else 嵌套

  • 条件判定 Switch

  • 关系和逻辑操作符

  • 循环 Do while

  • 循环 For

  • 循环嵌套

  • 方法

  • 条件变量范围

  • 类和对象

  • 对象实例化

  • 方法参数和返回值

  • 类的方法重载

  • 数组

  • 查询数组

  • 数据类型

  • 字符串

  • 接口

  • 继承

  • 继承关系的对象初始化

  • 对象的方法覆盖和重载

  • 访问限制和多重继承

  • 多态和泛型

  • 抽象类

  • 接口

  • 集合框架

  • 遍历集合和Map

  • 异常和抛出

  • 自动化测试


如果能加入一些流和函数式方面,以及泛型更深入一些会更好。


以上是关于开源中间件通讯(创始卷,第2期)的主要内容,如果未能解决你的问题,请参考以下文章

分布式技术专题「OSS中间件系列」从0到1的介绍一下开源对象存储MinIO技术架构

分布式技术专题「OSS中间件系列」从0到1的介绍一下开源对象存储MinIO技术架构

阿里分布式消息中间件RocketMQ的设计思路与技术细节

开源 | 蚂蚁金服分布式中间件开源第二弹:丰富微服务架构体系

第1824期Serverless 函数应用架构升级

支付宝的开源分布式消息中间件