概览

许多企业在不断努力加快开发速度,减少客户遇到的宕机时间 。微服务架构是更快地迭代、更高效地扩展和创建适应能力更强的应用程序的唯一途径。使用微服务构建的应用程序由各种各样的服务组成,这些服务执行不同的功能,而且通常是使用不同语言编写的。

Java 是一种历史悠久的语言,一些人会问它在微服务环境中是否有用。这篇文章将给出 Java 对现代应用程序(包括微服务)仍有很大价值的一些理由。

以下是您应该知道的关于微服务和 Java 的 5 件事:

1.为什么我应该用 Java 编写微服务?

Java 成为一种流行的语言选择是有其充分理由的。它是一种强大的语言,拥有多年的运行任务关键型应用程序的经验,并随着新编程模式的出现而不断改进。Java 在企业应用程序中得到普遍应用,培养了一大批拥有 Java 技能的软件开发人员。利用现有技能很有意义,甚至从头创建新应用程序时也是如此。微服务为他们提供了陡峭的学习曲线,而且添加一种新编程语言可能增加风险。它给创建、部署和在生产中管理微服务应用程序的过程引入了更多未知因素。

应用程序的前端通常是使用 JavaScript 创建的(尤其是基于 Web 的应用程序)。后端中常常会使用到 Java,用于获得经得起实践检验的数据管理。整个编程领域仍有很大的变化空间,但毫无疑问,Java 非常适合编写微服务。

2.Java EE 在微服务领域为我提供了什么?

Java Platform, Enterprise Edition 或 Java EE 是由社区推动的企业 Java 应用程序标准。它提供了各种各样的规范,受到大量供应商的支持。Java EE 中的许多标准非常适合微服务应用程序:使用 JAX-RS 提供 API,使用 JPA 处理数据,使用 CDI 执行依赖注入和生命周期管理,以便能够更轻松地在应用程序中执行测试。

3.我应该如何打包 Java 微服务?

微服务应用程序应包含部署所需的一切资源。在不更改代码或部署包的情况下,单个不可变的部署包应该能够从开发环境迁移到生产环境,这明显背离了传统 Java EE 应用程序的标准。 创建一个 war 文件,然后将它交给运营团队,让他们添加应用服务器,这显然不是微服务最佳实践。相反,有两种选择:已打包服务器或容器。已打包服务器可以是可执行的 JAR 或 zip 文件,这无关紧要。该数据包应包含应用程序、任何依赖项和应用服务器。WebSphere Application Server Liberty、Wildfly Swarm 和 Spring Boot 都提供了此选项。第二个选项 是创建一个容器,通常是 Docker 容器。使用 Docker 容器会创建一个将应用程序分离的额外层。它们可部署到本地和云中,在开发和生产环境之间实现最大的平等性。

4.用于 Java 开发中的基于微服务的工具是否存在?

是,在 Java 中开发微服务时,有许多工具可简化开发工作。服务发现解决方案(比如 Netflix Eureka、Consul 或 Amalgam8)很容易与 Java 微服务关联起来。为了提高恢复和容错能力,Netflix Hystrix 使用了一个 Java 客户端提供了隔板和断路器功能。还有其他一些可帮助测试新微服务的不错工具。您会发现,在测试微服务时使用模拟对象非常有用,JMockit 和 Mockito 简化了模拟对象的创建。

5.我是否需要在 Java 中编写所有应用程序?

不需要,您不应该为了使用它而使用它。如果您已经掌握了一些 Java 技能,或者确定微服务的一些功能使用 Java 更容易完成,那么您可以使用 Java。否则,可以挑选适合自己状况的语言。请保守一点,您应该不想维护一个使用了 10 种不同语言的微服务系统,但也不要害怕使用多种语言。要让您的工作更轻松,可以采用一种通用数据结构(比如 JSON)和 API 文档工具(比如 Swagger)。您的微服务应采用一种与语言无关的协议(比如 REST)进行通信,所以它们应始终能完美地协同工作。

更多信息

如您所见,Java 非常适合微服务是有诸多原因的(本文仅介绍了其中一小部分原因)。 如果您想了解有关的更多信息,或者掌握一些最佳实践技巧,请持续关注我们后续推出的一系列关于 Java 和微服务的文章。

原文转自 developerWorks 中国网站编辑团队

关于微服务和 Java 需要知道的 5 件事相关推荐

  1. 关于食品安全,你应该知道的60件事

    关于食品安全,你应该知道的60件事 2016-05-20 634人浏览 我迷潘玮柏 关于食品安全,你应该知道的60件事 4月7日,世界卫生日,今年主题是"食品安全".每年全球约20 ...

  2. 软件架构师应该知道的97件事

    原文出处:http://blog.csdn.net/seanbv/article/details/5451705 软件架构师是个让人羡慕的职业,在市场经济成熟的国家,其薪酬已经达到医生.律师.注册会计 ...

  3. 学习Go之前你应该知道的10件事 | Gopher Daily (2021.04.21) ʕ◔ϖ◔ʔ

    每日一谚:Don't use an interface if it's not clear how the interface makes the code better. Go技术生态 编写好的单元 ...

  4. (转)软件架构师应该知道的97件事

    软件架构师是IT 行业里独一无二的职业,既要精通软件开发技术,又要掌握业务知识,还要周旋于公司不同部门之间,协调各种予盾.做到这些绝非易事, 博文视点 即将翻译出版的新书<软件架构师应该知道的9 ...

  5. 【架构设计】软件架构师应该知道的97件事

    摘要:软件架构师是 IT 行业里独一无二的职业,既要精通软件开发技术,又要掌握业务知识,还要周旋于公司不同部门之间,协调各种予盾.做到这些绝非易事, 博文视点 即将翻译出版的新 软件架构师是IT 行业 ...

  6. 大规模运行MongoDB应该知道的10件事

    MongoDB的首席解决方案架构师Asya Kamsky 最近发表了一篇文章,概括了大规模运行MongoDB需要知道的10件事. MongoDB也需要DevOps.MongoDB是一个数据库.和任何其 ...

  7. 谷歌guava_Google Guava:您永远不会知道的5件事

    谷歌guava 每个开发人员可以使用哪些鲜为人知的Google Guava功能? 它是那里最受欢迎的库之一,它是开源的,您可能已经知道了,它来自人们玩Quidditch作为一项真正的运动的地方(至少在 ...

  8. Google Guava:您永远不会知道的5件事

    每个开发人员都可以使用哪些鲜为人知的Google Guava功能? 它是那里最受欢迎的库之一,它是开源的,您可能已经知道了,它来自人们玩Quidditch作为一项真正的运动的地方(至少在The Int ...

  9. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol52]43 为AES 对抗侧信道攻击的防御

    这是一系列博客文章中最新的一篇,该文章列举了"每个博士生在做密码学时应该知道的52件事":一系列问题的汇编是为了让博士生们在第一年结束时知道些什么. 为AES描述一些基础的(可能无 ...

最新文章

  1. 架构师之路 — 部署架构 — 超大规模负载均衡架构演进
  2. 生成对抗网络GANs理解(附代码)
  3. nginx利用referer指令实现防盗链配置
  4. WeChat:微信小程序设计流程注册完善、设计开发、审核发布之详细攻略
  5. Android中的Parcelable接口和Serializable用法和区别
  6. javax.management.InstanceNotFoundException: com.alibaba.druid:type=DruidStatService ERROR com.aliba
  7. 【数据库】Navicat Premium12远程连接MySQL数据库
  8. Android无线调试——抛开USB数据线
  9. Think in AngularJS:对比jQuery和AngularJS的不同思维模式
  10. ArrayList的使用
  11. MySQL(21)--- GROUP BY 语句
  12. linux设置r镜像,一劳永逸,R的个性化默认配置
  13. ZEMAX基础光学设计笔记(一)
  14. auto_ptr http://www.cnblogs.com/jtf-china/archive/2011/06/09/2076792.html
  15. java时间换算方法
  16. [维修案例] 艾美特电风扇(FS4085R)不能调风量维修
  17. 【LeetCode】算法初涉
  18. 设计模式(四)工厂模式
  19. Spark中distinct、reduceByKey和groupByKey的区别与取舍
  20. Linux虚拟机连接外网

热门文章

  1. 《阿里云天池大赛赛题解析(深度学习篇)》学习笔记(3)实体识别深度学习方法
  2. python解锁电脑屏幕_使用Python解锁计算机屏幕
  3. 最大公因数及其求解算法(GCD)
  4. 单片机奇偶交替闪烁_单片机控制继电器 使LED灯交替闪烁
  5. MySQL-数据库的索引类型有哪些
  6. wordpress插件_最好的WordPress购物车插件
  7. Android实现手机静音
  8. 我的世界java版做船_我的世界船怎么做 船的合成表
  9. 美团java一面面经
  10. mac 备份文件 太大 时间机器_Mac 时间机器 Time Machine 备份速度太慢的解决方法