‘ 并发译文 ’ 目录归档
什么是服务网格?为什么你需要它?
原文链接 译者:carvendy
什么是服务网格?为什么你需要它?
服务网格是专注于基础设施层,让服务可以更安全、更快、更可靠地通信。如果构建云应用,你就需要服务网格。
在过去一年,服务网格已经呈现出,并在云原生栈中起着决定性的作用。像一些高流量的公司,比如说Paypal,Lyft,Ticketmaster, 还有Credit Karma,在今年一月份就已经在自己的产品中使用了服务网格。Linkerd,一个开源的为云原生应用而生的服务网格,成为了云原生计算设施的官方项目。精确地来说,什么是服务网格呢?为什么和它有关系呢?
在本文中,通过过去十年的应用架构,给服务网格定义和它的组织体系。从有关系的但是不同的API网关、边缘代理、服务总线的组成,来区分服务网格。描述哪里是服务网格顶层,还有期待它是由什么组成的,并使得云计算基础设施进化的?
《译文:RabbitMQ 消费者确认和发布者确认》
原文链接 译者:flystarfly
介绍
使用消息代理(如RabbitMQ)的系统按定义分发。 由于发送的协议方法(消息)不能保证到达对方或被成功处理,所以发布者和消费者都需要一个交付和处理确认的机制。 RabbitMQ支持的一些消息协议提供了这样的功能。 本指南涵盖AMQP 0-9-1中的特性,但其他协议(STOMP,MQTT等)中的思路大致相同。
从消费者(consumers)投递rabbitmq代理(broker)的处理确认被认为是AMQP 0-9-1协议中的确认; rabbitmq代理(broker)对发布者(publishers)的确认被称作发布者确认(publisher confirms)
阅读全文
《译文:RabbitMQ关于吞吐量,延迟和带宽的一些理论》
原文链接 译者:flystarfly
该文阅读自RabbitMQ官方网站,分享好文给大家
你在Rabbit有一个队列,然后一些消费者从这个队列中消费。如果你根本没有设置QoS(basic.qos),那么Rabbit会把所有的队列消息都按照网络和客户端允许的速度推送给客户端。消费者将会飞速增加它们的内存占用,因为它们将所有消息都缓存在自己的RAM中。如果您询问Rabbit,队列可能会显示为空,但会有大量在客户端中,正准备由客户端应用程序处理的消息未被确认。如果您添加新的消费者,则队列中不会有消息发送给新的消费者。即使有其他消费者可用于更快地处理这样的消息,它们也只是在现有的客户端缓存,并且可能在那里很长一段时间。这是相当次优的。
因此,默认的QoS预取设置为客户提供了无限的缓冲区,这可能导致不良的行为和性能。但是,怎样的QoS预取缓冲区大小才是您应该设置的?设置的目的是让消费者保持工作饱和状态,同时尽量减少客户端的缓冲区大小,以便更多的消息留在Rabbit的队列中,来可供新消费者使用,或在消费者空闲时发送给消费者。
阅读全文
《Hibernate快速开始》Query /Criteria
Criteria查询为HQL,JPQL和native SQL 查询提供了一种类型安全的替代方法。
Hibernate 提供了一个遗留下来比较旧的org.hibernate.Criteria
API,并且它不被推荐使用。没有功能开发将针对这些API。最终,特定于Hibernate的criteria 功能将被移植到JPA的扩展javax.persistence.criteria.CriteriaQuery
。有关org.hibernate.Criteria
API的详细信息,请参阅传统Hibernate条件查询。
Java Fork/Join框架
原文链接:A Java Fork/Join Framework(PDF) – Doug Lea
译序
Doug Lea 大神关于Java 7
引入的他写的Fork/Join
框架的论文。
响应式编程(Reactive Programming
/ RP
)作为一种范式在整个业界正在逐步受到认可和落地,是对过往系统的业务需求理解梳理之后对系统技术设计/架构模式的提升总结。Java
作为一个成熟平台,对于趋势一向有些稳健的接纳和跟进能力,有着令人惊叹的生命活力:
Java 7
提供了ForkJoinPool
,支持了Java 8
提供的Stream
。- 另外
Java 8
还提供了Lamda
(有效地表达和使用RP
需要FP
的语言构件和理念)。 - 有了前面的这些稳健但不失时机的准备,在
Java 9
中提供了面向RP
的官方Flow API
,实际上是直接把Reactive Streams
的接口加在Java
标准库中,即Reactive Streams
规范转正了,Reactive Streams
是RP
的基础核心组件。Flow API
标志着RP
由集市式的自由探索阶段 向 教堂式的统一使用的转变。
通过上面这些说明,可以看到ForkJoinPool
的基础重要性。
对了,另外提一下Java 9
的Flow API
的@author
也是 Doug Lee 哦~
PS:基于Alex/萧欢 翻译、方腾飞 校对的译文稿:Java Fork Join 框架,补译『结论』之后3节,调整了格式和一些用词,整理成完整的译文。译文源码在GitHub的这个仓库中,可以提交Issue/Fork后提交代码来建议/指正。
0. 摘要
这篇论文描述了Fork/Join
框架的设计、实现以及性能,这个框架通过(递归的)把问题划分为子任务,然后并行的执行这些子任务,等所有的子任务都结束的时候,再合并最终结果的这种方式来支持并行计算编程。总体的设计参考了为Cilk
设计的work-stealing
框架。就设计层面来说主要是围绕如何高效的去构建和管理任务队列以及工作线程来展开的。性能测试的数据显示良好的并行计算程序将会提升大部分应用,同时也暗示了一些潜在的可以提升的空间。
《Maven官方文档》配置默认Mojo扩展
原文链接 译者:carvendy
配置默认Mojo扩展
在这么多例子中,你需要配置一个插件,这里有两个选项生效:插件级别配置配置和执行级别配置。插件级别配置是很多公共方法配置的插件,将用于命令行,是定义作为默认的生命周期,或者使用一个公共配置在所有调用。事实上,为了指引从命令行调用,插件级别配置已经是历史上唯一的选择。
在另一方面,例子中一些先进的构建进程需要一些mojos的执行同样的mojos,也有不同一些来自于单个插件使用了不同的配置,执行级别配置是很常用的。这些例子通常涉及的插件是介绍作为一部分的标准构建进程,但是这里目前不是在默认生命周期的特别打包。在这些用例,通常配置分享不同执行,是依然指定在插件级别的配置。 阅读全文
JEP 220:模块化运行时镜像
原文链接 译者:carvendy
JEP 220:模块化运行时镜像
作者 Mark Reinhold
创建 2014/10/23 15:05
更新 2017/05/19 01:58
类型 特性
状态 集成
域 SE
JSR 376
讨论 拼图的开发在openjdk.java.net 努力 XL
持续时间 XL
优先 l
检验人 Alan Bateman, Alex Buckley, Chris Hegarty, Mandy Chung, Paul Sandoz
发行 9
版本 8061971
块 JEP 200:模块化JDK
JEP 261:模块系统
涉及 JEP 162:模块化思想准备
JEP 282:jlink:Java连接器
JEP 201:模块化源码
概述
重构JDK和JER运行镜像到容纳这些模块和提高行为,保护和可维护性。定义新的URI方案来命名模块,类和资源存储在一个运行时镜像,而没有揭示内部结构或者镜像格式。修改存在的规范作为需要容纳的改变。 阅读全文