java微服务有哪些(java微服务是做什么的)

网友提问:

有大佬了解Java中的微服务项目吗?

优质回答:

你这个问题,应该拆分成两个问题。

第一,什么是微服务?

第二,如何实现微服务?

下面从这两各方面来来解答你的问题。

第一,什么是微服务?

微服务最初是由Martin Fowler提出来的他的理解如下:

微服务架构就是将单一程序开发成一个微服务,每个微服务运行在自己的进程中,并使用轻量级的机制通信,通常是HTTP RESTFUL API。这些服务围绕业务能力来划分,并通过自动化部署机制来独立部署。这些服务可以使用不同的编程语言,不同数据库,以保证最低限度的集中式管理。

总结起来微服务就是将一个单体架构的应用按业务划分为一个个的独立运行的程序即服务,它们之间通过HTTP协议进行通信(也可以采用消息队列来通信,如RoocketMQ,Kafaka等),可以采用不同的编程语言,使用不同的存储技术,自动化部署(如Jenkins)减少人为控制,降低出错概率。

举个例子

一个电商网站,可以有以下微服务。

用户服务

商品服务

订单服务

支付服务

物流服务

售后服务

……

也就是将一个复杂的系统,拆分成一个个独立的子系统(微服务),让他们之间各自独立,可以互相调用,让系统更加的健壮稳定,不会因为其中某一个业务出现问题,而造成整个系统的瘫痪。

那为什么要使用微服务呢?我想通过我上面的列子你也知道一二了。

在没有微服务之前,我们开发的系统架构是这个样子的。

这就是一个典型的单体架构

使用经典的3层模型,即表现层,业务逻辑层,数据访问层。虽然在软件设计中划分了3层模型,但是对业务场景没有划分,一个典型的单体架构就是将所有的业务场景的表现层,业务逻辑层,数据访问层放在一个工程中最终经过编译,打包,部署在一台服务器上。

这种单体架构是具有局限性的,单体架构存在的不足 。

在小型应用的初期,访问量小的时候这种架构的性价比还是比较高的,开发速度快,成本低,但是随着业务的发展,逻辑越来越复杂,代码量越来越大,代码得可读性和可维护性越来越低。用户的增加,访问量越来越多单体架构的应用并发能力十分有限。

所以微服务就变得很有必要。

第二,微服务如何实现

说到微服务就不得不提微服务框架,其中最热门就是Sprint cloud 以及阿里巴巴的Dubbo。

技术选型上,我推荐使用spring cloud,其在社区活跃度和API以及网络教程更加健全。而如果是有高并发大流量场景,则推荐使用阿里巴巴的Dubbo。

官网如下:

SpringCloud

http://projects.spring.io/spring-cloud(现在非常流行的微服务架构)

Dubbo:http://dubbo.io

以上↑

不知道有没有解答你心中的疑惑,程序员不懂不要紧,关键是要不断的学习,建议你接下来学习一下SpringCloud,那样你就会有一个比较全面的了解。

加油!

其他网友回答

微服务是个很广的概念,涉及的东西也很多,我觉得对于一个java从业者,可以学习几个框架,spring cloud和dubbo,这是使用最多的两个,我看问答回复的基本也是基于这两个封装的

版权声明