潍坊市论坛

首页 » 分类 » 常识 » 20考研河南大学计算机考研分数统计
TUhjnbcbe - 2021/5/18 23:45:00
中科白癜风医院怎么样 http://m.39.net/pf/a_4350710.html
作者

MarcoBehler  策划

田晓旭  本文将为大家介绍什么是Java微服务,了解Java微服务的体系架构,以及如何设计、开发、部署和测试Java微服务。  1Java微服务:基础  

要真正理解Java微服务,就必须从最基本的东西开始:为人诟病的Java大型单体应用是什么,它的优点和缺点是什么。

什么是Java大型单体应用?  

假设你正在为一家银行或一家金融科技初创公司工作。你为用户提供一款可以用它来开设新的银行账户的移动应用程序。

如果用Java代码来写,实现一个简化版的控制器类如下所示:

ControllerclassBankController{

PostMapping("/users/register")publicvoidregister(RegistrationFormform){validate(form);riskCheck(form);openBankAccount(form);//略……}}

这段代码要:

验证注册表单。

对用户的地址进行风险检查,以决定是否可以给他一个银行帐户。

打开这个银行账户

部署的时候,你会将BankController类与所有其他源代码一起打包到bank.jar或bank.war中:在远古时期,这个庞然大物还是不错的,它包含你的银行系统运行所需的所有代码。(粗略估算,一开始你的jar或war文件的大小会在1-MB范围之内。)

然后在服务器上运行.jar文件——这就是部署Java应用程序所需要做的全部工作。

Java大型单体应用存在什么问题?  

本质上,Java大型单体应用没有什么问题。但通过以往的项目经验,我们可以明显发现,如果你让许多不同的程序员/团队/顾问面临着高压和不明确需求,围绕同一款大型单体应用工作好几年,那么你那个小小的bank.jar文件就会变成一只巨大的、有千兆字节的代码怪物,每个人都不敢部署它。

如何让Java大型单体应用变得更小?  

这自然就引出了如何缩小大型单体应用的问题。现在,你的bank.jar是在一个JVM中运行的,一台服务器上运行一个进程。

这时,你可能会产生一个想法:风险检查服务是公司其他部门使用的,我的这款银行应用与它没什么关系,不妨把它分离出去,将它作为自己的产品去部署,作为单独的进程来运行。

什么是Java微服务?  

实际上,这意味着你不需要在你的BankController中调用riskCheck()方法,而是将该方法或bean及其所有辅助类移动到它自己的Maven/Gradle项目中,对其进行源代码配置管理,并将其独立部署,不依赖于你的银行系统。

整个提取过程本身会不会使你新的RiskCheck模块成为微服务呢?大家对微服务定义有着不同的解释:

如果它里面只有5-7个类,那么算不算微?

或者0个类仍然算是微吗?

微服务和类的数量有什么关系吗?

我们不去钻理论上的牛角尖,而是

1
查看完整版本: 20考研河南大学计算机考研分数统计