最近发布

如何使用微服务使“恰到好处”更容易

随着微服务风靡软件行业,传统企业被迫重新思考他们近十年来一直在做的事情。我们已经看到软件设计范例随着时间的推移而随着项目管理方法的演变而变化。老手可能会认为这是另一波浪潮,它会轻轻地找到它通往日常业务的岸边,但这一次看起来影响力比我们以前看到的任何东西都要大。有趣的是,微服务并不新鲜。 分区和引入模块是架构师的核心技能。软件行业已经学会了如何将服务耦合并围绕组织能力构建它们。基于微服务的体系结构中的新功能是真正独立的服务分布和连接在一起的方式。使用所有技术都可以轻松构建个性化服务。从许多服务构建系统是真正的挑战,因为它向我们介绍了分布式系统的问题空间。 企业开发人员已经考虑了规范并在容器内部构建了实现,而没有过多地关注他们的个人生命周期。连接到启动和关闭事件很容易,访问其他组件只是一个注入的实例。选择的基础平台或框架使得将对象映射到关系数据库或通过消息传递连接到其他系统变得相对容易。所有这一切中最好的部分是交易性,这很容易实现。构建为支持开发人员便利的手段非常容易导致违反JonasBonér的Reactive Microservices Architecture中概述的微服务核心原则的应用程序。 虽然传统的应用程序服务器提供了许多功能,但它们并不能提供基于分布式微服务的系统真正需要的功能。使用标准平台API和应用程序服务器只有在为每个部署的服务扩展应用程序服务器和数据库时才可行,并且尽可能地大量投资以使用异步通信。这仍然使您回到20世纪90年代的CORBA,J2EE和分布式对象。您仍然会错过所谓的外部架构的许多部分,如服务发现,编排,配置和监控。在单片应用程序设计环境中,开发人员的工作更轻松,对于更现代的体系结构而言具有难以置信的缺点。 寻找完美的微服务框架已经开始。而不是操作太多无人需要的东西,相关功能的理想组合与尽可能少的开销将是“恰到好处”的契合。这是最近发布的Lagom Framework强调的地方。Lagom是一个用于创建基于微服务的系统的开源框架。它提供四个主要功能: 今天关于基于微服务的系统的讨论的主要关键点是它们能够通过提供多语言方法从供应商锁定中解放企业。这些体系结构不是被迫使用单一的,可用的技术,而是将其作为蓝图,而是采用“使用正确的工具来完成正确的工作。”而不是将其限制在中间件,甚至。能够使用各种通信协议是关键。而Lagom并没有例外。当多个Lagom服务相互通信时,该框架提供了无缝体验。 虽然根据有限的上下文分离服务听起来相当容易,但企业应用程序中最具挑战性的部分是持久性。特别是来自棕色领域的开发,将现有数据库分离到服务领域需要应用领域的全面性,专有技术和知识。即使您将所有这些努力都投入其中,您也会很快注意到传统的服务交互方式和数据访问(例如JDBC)在高度分布式应用程序中的扩展性不够。 对于微服务,不可变性的关键概念起着非常重要的作用。Lagom大量使用不可变值来表示命令,事件和状态,因为它鼓励用户使用事件源架构实现基于微服务的系统。事件源(ES)和命令查询责任隔离(CQRS)经常被一起提及。虽然两者都不一定意味着另一方,但它们相互补充。事件源体系结构的主要概念差异在于,更改被捕获为已发生事物的不可变事实。例如:“航班是由Markus预订的。”所有事件都被存储,当前状态可以从事件中获得。 即使CQRS起初对您不熟悉,它也是最适合微服务架构的。使用Lagom,您可以使用您喜欢的任何数据存储解决方案来实现您的服务。但是,异步API可实现最佳可伸缩性。如果您正在使用阻止API(例如JDBC或JPA),请使用固定或有限大小的专用线程池为调用这些阻塞API的组件小心地管理阻止。切勿通过多个异步调用(如Service API调用)来阻止阻塞。 原文:https://www.oreilly.com/ideas/how-to-make-just-right-easier-with-microservices

使用Lagom框架的反应式微服务指南

1.概述在本文中,我们将探索Lagom框架并使用反应式微服务驱动架构实现示例应用程序。 简而言之,反应式软件应用程序依赖于消息驱动的异步通信,并且本质上具有高度响应性,弹性和弹性。 通过微服务驱动的架构,我们意味着将系统划分为协作服务之间的界限,以实现隔离,自治,单一责任,移动性等目标。有关这两个概念的进一步阅读,请参阅“反应式宣言”和“ 反应式微服务架构”。 Lagom是一个开源框架,它构建了从单块到微服务驱动的应用程序架构的转变。它抽象了构建,运行和监视微服务驱动的应用程序的复杂性。 在幕后,Lagom框架使用Play框架,Akka消息驱动的运行时,Kafka用于解耦服务,事件源和CQRS模式,以及ConductR支持,用于监视和扩展容器环境中的微服务。 我们将创建一个Lagom应用程序来处理来自用户的问候请求,并回复问候消息以及当天的天气统计信息。 我们将开发两个独立的微服务:问候和天气。 问候语将集中于处理问候请求,与气象服务交互以回复用户。该天气微服务将服务于今天的天气统计数据的请求。 在现有用户与Greeting微服务交互的情况下,将向用户显示不同的问候消息。 现在让我们快速了解一下设置一个有效的Lagom系统的步骤。 创建项目文件夹lagom-hello-world,然后是构建文件build.sbt。Lagom系统通常由一组sbt构建组成,每个构建对应于一组相关服务: organization in ThisBuild := “org.baeldung” scalaVersion in ThisBuild :=…

自JDK 8以来所有Java和JVM功能的分类列表

自从版本8发布到版本11以来,Java由120个 JDK增强建议(JEP)构成,每个建议都为平台带来了一些改进。我决定阅读它们并根据改进创建一个简明的分类列表。 内容: 因为每个类别中都有许多功能,这里不按时间顺序显示它们,而是从那些看起来最重要的功能开始。此外,在每个类别的末尾添加了预期的JDK 12功能。 详见:https://advancedweb.hu/2019/02/19/post_java_8/

比较有意思的IT开发者博客列表

1、https://advancedweb.hu 这是精通技术的开发人员的博客,主要在web-dev领域。 他们都拥有计算机科学硕士学位,并拥有超过十年的现场经验。 他们总是寻求新的流程和技术来制作更好的软件。 这篇博客讲述了他们每天遇到的行业见解和解决问题的经历。 2、https://www.baeldung.com/ Baeldung是一个专注于Java生态系统的技术站点,每月的页面浏览量达到约450万。我们发布教程和操作方法文章 – 重点关注实用的,可立即运行的代码。作为一名新作者,您应该已经拥有了您想要涵盖和关注的技术的经验,以及良好的英语语言能力。最后 – 以前的写作经验当然是一个加分,但肯定不是一个要求。 3、https://blog.frankel.ch/ 尼古拉斯弗兰克尔, NicolasFränkel是一名开发人员倡导者,拥有超过15年的咨询经验,为众多不同客户提供咨询服务,涉及广泛的环境(如电信,银行,保险,大型零售和公共部门)。通常使用Java / Java EE和Spring技术,但具有Rich Internet Applications,Testing,CI /…

GitHUB几个特色的资源库

https://github.com/bayandin/awesome-awesomeness一文收集了编程语言以及其他各类github资源库,绝对是个优质的IT清单。 各种安全相关思维导图整理收集。 提供了十几个大类的优质资源清单。

如何在软件交付中建立流程

Flow Framework的想法始于我尝试可视化制造,如软件交付的生产流程。Flow Framework的核心前提是我们需要衡量端到端的业务价值流。 Flow Framework 完全侧重于端到端价值流及其与业务结果的相关性。测量是通过软件传递的基本事实完成的,该事实是通过价值流网络层的工件流观察到的。敏捷和DevOps指标和遥测位于Flow Framework下方。例如,如果敏捷团队一直在努力实现其发布目标,那么SAFe或Scrum框架可以提供更好的优先级和规划的指标和指南。相比之下,Flow Framework专注于端到端指标,用于确定这些瓶颈可能位于何处 – 例如,如果它们位于开发的上游或下游。 此外,Flow Framework避免了有助于跟踪流量指标并将其与结果相关联的活动度量。没有关于组织如何“敏捷”或“如何开发”的指标,只关注每个价值流中流动的商业价值以及它产生的结果。如果对市场的响应是关键需求,那么Flow Framework可以突出显示对于特定值而言过慢的流量和反馈周期,这意味着可能需要更多的敏捷实践。 Flow Framework的作用是帮助您确定您在Agile和DevOps实践中的投资结果,并为您提供改进这些实践所需的指标。我们的目标是为您提供扩展流程,反馈和持续学习的方法,不仅可以用于开发和操作,还可以用于软件交付的端到端业务流程。 使用值流流程 在顶层,Flow Framework提供了两件事。首先,价值流指标允许您跟踪组织内的每个价值流,以便您可以将生产指标与业务成果相关联。其次,价值流网络层提供了衡量每种产品交付结果所需的基础设施。 在最高级别,Flow Framework是一种机制,用于协调组织中围绕软件产品的所有交付活动,跟踪这些活动的业务结果,以创建结果驱动的反馈循环。…