java int不将0忽略_Java微服务:蛋糕是骗人的,但您不能忽略它

java int不将0忽略

构建微服务实际上意味着什么? 通过微服务框架的眼光回答

忽略微服务的趋势已变得不可能。 有些人会说这只是另一个难以忍受的流行语,而另一些人会背诵打破巨石的优势或采取逆势方法并关注负面因素。

在本文中,我们将全面了解我们拥有的框架,重点是Java生态系统,以实际实现微服务并了解它们的全部含义。 让我们潜入。

蛋糕是一个谎言

我想到的第一个问题是,我们真的需要一个专门的框架来构建微服务吗? 答案是不。 您可以使用微服务框架构建整体吗? 是。 因此,如果真正由您决定并且要使用它,那么微服务框架相对于Java EE或Spring有什么好处? 什么使它值得采用? 它们是否同时解决内部架构和外部运维架构?

在接下来的几节中,我们将仔细研究Java EE及其新的微型配置计划,Spring和Spring Boot,带有Lagom的Lightbend堆栈以及其他开源解决方案,例如Spotify的Apollo。

在继续前进之前,值得一提的是,关于微服务架构的定义还不是很明确。 ThoughtWorks的首席科学家Martin Fowler在他有关微服务的第一篇文章中试图对其进行定义:

“微服务架构风格是一种将单个应用程序开发为一组小型服务的方法,每个小型服务都在自己的进程中运行并与轻量级机制(通常是HTTP资源API)进行通信。 这些服务围绕业务功能构建,并且可以通过全自动部署机制独立部署。”

这篇文章与微服务的优缺点无关,它假定您只是对支持它的底层技术感兴趣。 另一篇值得探讨这些问题的文章涵盖了调试微服务的主要挑战 -这是许多人在考虑微服务体系结构时并未想到的常见陷阱。

让我们开始并逐一检查以下技术/平台/框架。

1. Java企业版

用于构建应用程序的经典Java EE方法是针对整体的,随着时间的流逝,这些整体往往会变成……意大利面条式代码怪物。 传统上,企业应用程序将被打包到单个EAR(企业归档)部署单元中,该单元包含WAR(网络归档)文件和JAR(Java归档)。

但是,“ Vanilla” Java EE也可以用于微服务架构。 有关将Java EE整体重构为微服务体系结构的步骤的深入研究示例, 请查看 Arun Gupta的这篇文章 ,他在其中通过购物车的示例应用程序介绍了此过程中所需的步骤。

即使Java EE 8的开发有所放缓,但背后的“非官方”社区仍然活跃而且活跃。 Java EE Microprofile背后的人们提出了一项针对微服务架构优化企业Java的新计划。 您可以在此处加入讨论 。

考虑Java EE微服务时要考虑的另一个有趣项目是Kumuluz 。 该框架可以利用您现有的Java EE知识,并为您提供一种轻松选择应用程序所需组件的方法,而不会浪费太多时间在配置上。

底线: Java EE及其周围的项目非常适合微服务,但不涉及操作方面,而是将其用法和最佳实践留给您个人解释。

2. Lightbend:Play,Akka,ConductR和Lagom

Lightbend(以前称为Typesafe)为我们提供了更多选择。 与Kumuluz相对于普通Java EE的优势类似,Lagom将Lightbend堆栈与Play,Akka和ConductR包裹在一起,并提供了构建微服务的简便方法。 它的基础组件还包括Cassandra,Guice,Jackson,slf4j,Logback和其他Lightbend组件。

Lagom (瑞典语中“恰到好处的数量”)仍处于早期阶段,但对于Lightbend堆栈而言,这似乎是一个有希望的方向。 Lightbend的首席技术官Jonas Boner在接受InfoQ采访时说:“目前,大多数微服务框架都集中在简化单个微服务的构建上,这很容易。 Lagom将其扩展到微服务系统,大型系统–这是困难的部分,因为在这里我们面临着分布式系统的复杂性。

底线: Lagom将Lightbend的功能集成到一个框架中,以及ConductR提供的操作功能。 不仅关注单个微服务,而且关注整个系统。

3,Spring,Spring Boot和Spring Cloud

尽管Spring和Spring Boot并不称自己为微服务框架,并且Spring站点的首页上没有提及微服务,但这并不意味着它们不在循环之中。 几乎似乎他们似乎是故意不称其为微服务,以远离流行语。

Spring Stack与Spring Cloud一起,利用Netflix Eureka和Ribbon来支持分布式系统的开发(该术语通常与“微服务”重叠)。 这些功能包括配置管理,服务发现,智能路由,控制总线,领导者选举,分布式会话等。

要深入了解如何使用Spring以及其他一些Netflix和其他开源项目构建微服务, 请查看InfoQ的这篇文章 。

底线: Spring在微服务开发方面处于有利位置,并且围绕着解决了运营角度的外部开源项目提供了产品。

4. Dropwizard

与Spring类似, Dropwizard也没有太多谈论微服务。 这是一个用于开发对ops友好的高性能RESTful Web服务的Java框架。 经过认真研究的Java库集合,使构建易于生产的Java应用程序更加容易。

Dropwizard模块允许连接Dropwizards核心所没有的其他项目,并且社区还开发了一些模块来连接类似Netflix Eureka的项目,类似于Spring Cloud。

之前,我们还对Dropwizard和Spring Boot进行了正面对比,并比较了它们的功能。

底线:由于Dropwizard是一个社区项目,没有像Spring和Pivotal,Java EE和Oracle,Lagom和Lightbend这样的大型公司的支持,因此它的开发速度可能会较慢,但是背后有一个强大的社区,因此可以大公司和较小项目的框架。

5. Spotify Apollo,VertX和其他“ Microframeworks”

除了我们在这里提到的4个主要参与者之外,还有很多其他项目值得一提,它们也可以用于编写微服务:

Vertx ,一个用于在JVM上构建响应式应用程序的工具包。 有人可能会认为它应该在四大巨头中占有一席之地。

Spotify Apollo ,Spotify在编写Java微服务时使用的一组Java库。 Apollo包括HTTP服务器和URI路由系统等功能,使实现RESTful服务变得轻而易举。

其他框架包括Spark,Ninja和Jodd以及Restlet 。

底线: Java微服务的竞争空间很大,值得一试的是较小的参与者。

6.微服务先决条件

正如马丁·福勒(Martin Fowler)在其微服务先决条件博文中所说:“重要的是要确保您的监控指示问题时能够Swift做出React。 特别是,任何事件管理都需要开发团队和运营部门参与,以解决紧迫的问题和根本原因分析,以确保基本问题得到解决。” 同样,如果您还没有准备好使用微服务体系结构,那么此帖子和Hackernews上的帖子会共享更多的问题。

在OverOps ,我们正在构建一个工具来解决这一难题 ,并显示何时,何地以及为什么在生产中导致代码中断。 它是唯一为您显示整个调用堆栈中每个异常,已记录警告和错误的完整源代码和变量状态的工具。 检查一下 。

Overops-comp

OverOps错误分析屏幕

最重要的是:微服务要付费,而且并非每个系统都适合。 如果您选择微服务架构,则应该深入了解成本并确定应改进的流程。

最后的想法

不管使用哪种框架或平台,构建微服务都与它们紧密结合。 这是一种思维定势和一种体系结构的方法,您可能应该选择自己觉得会更有效率的任何一种选择。

话虽如此,成功实现微服务架构并不仅限于应用程序本身。 围绕它的大部分成本来自所谓的DevOps流程,监视,CI / CD,日志更改,服务器配置等。 将来,我们将在博客上介绍这些方面,并很高兴听到您对此的想法,并在我们的下一篇文章中进行介绍。 随时通过hello@overops.com和@overopshq进行联系 。

翻译自: https://www.javacodegeeks.com/2016/11/java-microservices-cake-lie-cant-ignore.html

java int不将0忽略

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/335655.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

4怎么放大字体_Word字体怎么放大?简单教你几招轻松搞定

一般情况下我们都会选择用Word编辑文章。文章编辑完成之后我们通常会对文章进行排版。在排版的过程中如果我们需要将Word字体放大该怎么办呢?下面我就来教大家几个Word字体放大的小技巧,一起来看看吧。下面以放大“字体演示”为例为大家演示操作过程。一…

js splice坑_JavaScript的splice()方法在for循环中使用可能会遇到的坑!!!

在我们日常敲代码的时候,常常会用到splice()方法来删除数组中的元素(就是以截取的方式),因为它会直接对数组进行修改。在使用splice之前,必备条件是,要先有一个数组。var arr new Array(1,2,3,4,5); // 初始化一个数组var delete…

wps如何将字体竖着排列_WPS文字中怎么竖着打字?wps文字竖排的设置方法介绍

wps中怎么样才能让文字竖着写啊?WPS现在的应用比较多,其实WPS文字和Word相差不过,都是一个办公软件,我们有时候在编辑的时候需要把文字竖排,那么,wps文字怎么竖排呢?接下来脚本之家小编就给大家…

HH SaaS电商系统的线上服务商品库存和采购设计

文章目录线上服务商品库存和采购整体思路线上服务商品的采购单状态线上服务商品的出库单状态商家完成服务线上服务商品库存和采购整体思路 线上服务商品直接在商品编辑页面编辑库存数量即可,服务端自动生成类型为“调整入库”的入库单和类型为“调整出库”的出库单…

arm linux gif 显示_100ASK_IMX6ULL arm板子如何显示图片、汉字、划线、背景色

最近在研究基于imx6ull开发板,想让开发板支持显示图片、字符串、背景色的功能。 操作的主要步骤如下:移植设备树和驱动移植libjpeg库编写测试程序一、移植设备树和驱动开发板原厂SDK已经移植了lcd对应的设备树和驱动。具体可以参考韦东山老师的文章https…

动态代码生成 静态代码生成_将速度提升到自己的个人代码生成器中

动态代码生成 静态代码生成Speedment是一个开源工具包 ,可用于生成Java实体和管理器以与数据库进行通信。 如果您需要域模型的对象关系映射,那么这很好,但是在某些情况下,您可能希望使用数据库作为模板来生成完全不同的东西。 在本…

HH SaaS电商系统的库存调整单设计

为了更加灵活地变动商品的库存,以及其它原因导致系统库存数和实际库存数不一致,可以通过库存调整单进行校正。 简简单单设计,没有状态管理,不需要通过审核,直接变更库存数~ 原型设计 库存调整单列表 库存调整单详情…

mysql优化 运维_MySQL运维---MySQL优化

一、优化1、优化的角度2、优化的方向3、数据库优化思路4、MySQL优化介绍5、优化工具介绍二、操作系统优化1、top命令1)CPU2)内存3)slab分配器---Linux内存4)page cache5)swap分区修改成不使用swap分区:永久生效,修改配置文件:2、大页内存机制…

微基准测试 r_在您的构建过程中添加微基准测试

微基准测试 r介绍 作为一个行业,我们正在采用更高的透明度和更可预测的构建过程,以降低构建软件的风险。 持续交付的核心原则之一是通过反馈循环收集反馈。 在Dev9中 ,我们采用了与CD原则一致的“ 先知道 ”原则,这意味着我们&…

HH SaaS电商系统服务商品在移动端下单结算的交互设计

服务商品只能单独下单购买,不允许加入购物车我们知道服务商品有三种形式:线上服务、到店服务、上门服务,因为不同服务形式买家和卖家所需的信息不同,所以交互界面也会不同,前端需要判断当前服务商品的服务形式&#xf…

linux 远程备份mysql数据库_使用脚本自动化远程备份MySQL数据库

通常情况下、MySQL都需要备份,备份的方法有很多种。下面是我用脚本配合计划任务完成的自动备份远程的数据库。一、 确认备份方案:备份机:ip192.168.8.51数据库服务器:ip192.168.8.46备份的内容:对mysql的studydb、cour…

javafx动画_JavaFX动画工具

javafx动画好的,我想是时候让您讲一个小秘密了。 最近三个月左右,我从事一个私人项目,目标是创建一个工具,使我可以轻松地为Java桌面应用程序创建动画。 JavaFX在API级别上提供了出色的动画支持,但对于初学者甚至中级程…

HH SaaS电商系统的商品类目设计

文章目录商品的基础类目创建基础类目编辑基础类目删除基础类目启用/禁用基础类目商城的营销类目新增商城营销类目编辑商城营销类目营销类目关联商品店铺的营销类目新增营销类目营销类目关联商品编辑店铺营销类目类目启用规则(适用于全部类目)商品类目分为…

HH SaaS电商系统的品牌模块设计

品牌和商品基础类目属于多对多的关系创建品牌时必须关联商品基础类目,且只能关联三级类目,至少关联一种品牌只能由租户统一进行维护管理,供应商、商家、商城可以申请新品牌,但是由租户进行审核品牌被删除或者停用后,关…

chameleon 算法_为了简单起见,Arquillian Chameleon

chameleon 算法使用Arquillian时,您需要做的一件事情就是定义要在哪个容器下执行所有测试。 这是通过在适配器的类路径中添加依赖项并取决于所使用的模式(嵌入式,托管或远程)来下载的来完成的。 他是应用程序服务器。 例如&…

HH SaaS电商系统管理后台的商品规格编辑

类目规格删除或者新增 类目原来已有的规格被删除或者新增,那么原先的SKU全部需要重新生成,所以编辑时SKU信息无需展示,保留的规格信息也不必显示。 提交商品数据后,后端根据规格值名称进行匹配,如果匹配成功则更新SKU…

flink和kafka区别_Apache Flink和Kafka入门

flink和kafka区别介绍 Apache Flink是用于分布式流和批处理数据处理的开源平台。 Flink是具有多个API的流数据流引擎,用于创建面向数据流的应用程序。 Flink应用程序通常使用Apache Kafka进行数据输入和输出。 本文将指导您逐步使用Apache Flink和Kafka。 先决条件…

solr cloud 更新 solrconfig 配置_Solr各版本新特性「4.x,5.x,6.x,7.x」

一.Solr4.x新特性1.近实时搜索Solr的近实时搜索【Near Real-Time,NRT】功能实现了文档添加到搜索的快速进行,以应对搜索快速变化的数据。2.原子更新与乐观并发原子更新功能允许客户端应用对已有文档上进行添加、更新、删除和对字段增值等操作&#xff0c…

junit数据驱动测试_使用Junit和Easytest进行数据驱动的测试

junit数据驱动测试在本文中,我们将看到如何使用Junit进行数据驱动的测试。 为此,我将使用一个名为EasyTest的库。 我们知道,对于TestNG,它已内置了数据提供程序。 通过简单的测试,我们可以使用Junit进行数据驱动的测试…

HH SaaS电商系统的出库功能模块设计

文章目录出库单业务流程基本流程扩展流程找不到符合条件的仓库,要求部分退款(未生成出库单时)找不到符合条件的仓库,全部退款(未生成出库单时)找不到符合条件的仓库,等待库存补足(未…