什么是Java微服务
我一直在网上搜索,但我对什么是java微服务有点困惑。我的意思是,我知道什么是web服务,并且我被告知每个wiki的微服务如下所示:
In computing, microservices is a software architecture style in which complex applications are composed of small, independent processes communicating with each other using language-agnostic APIs.
微服务的属性包括:
Properties of microservices architecture:
It's a kind of architecture The services are easy to replace Services are organized around capabilities, e.g. user interface front-end, recommendation, logistics, billing, etc Services can be implemented using different programming languages, databases, hardware and software environment, depending on what fits best Architectures are symmetrical rather than hierarchical (producer - consumer)
但我需要一个具体的java示例来理解如何创建微服务。有没有人可以举个例子
# 1 楼答案
您可以检查以下内容: https://spring.io/blog/2015/01/20/microservice-registration-and-discovery-with-spring-cloud-and-netflix-s-eureka
此示例基于以下服务:
Netflix Eureka:
Eureka是一种基于REST(代表性状态传输)的服务,主要用于AWS云中定位服务,以实现中间层服务器的负载平衡和故障切换
Eureka只是一个服务注册表,其中包含所有已启动的服务实例服务器名和端口详细信息
Netflix Zuul:
Zuul是一种边缘服务,提供动态路由、监视、弹性、安全性等功能
它是microservice客户端的端点。所有其他服务实例都在securedbox中进行保护,而Zuul则向截获所有客户端请求的客户端公开
Netflix Ribbon:
Ribbon是一个进程间通信(远程过程调用)库,带有内置的软件负载平衡器。主要使用模型涉及具有各种序列化方案支持的REST调用
Ribbon与Zuul协同工作,在N个微服务实例运行时,使用大量算法选择性能最佳的服务节点来服务请求
简单地说,Zuul拦截客户端请求,并根据请求URL使用Eureka服务发现查找Microservice实例的ip和端口。Ribbon选择最佳服务节点为请求提供服务,然后从Zuul请求路由到相应的microservice实例
从我的项目角度来看的优势:
我们可以根据网络流量添加或删除“N”个服务节点
# 2 楼答案
微服务与它的名字一模一样。这是一个执行非常简单功能的小型服务
所以,是的,就代码而言,您可能正在寻找REST服务。请注意,任何其他API样式都可以。它不一定是REST,但是它必须是语言不可知的,您才能获得所有好处
但这个想法远不止这些。其背后的想法是,他们非常专业,没有大的业务流程附加到他们。例如,如果您有一个处理付款的服务,则会写入审核日志,然后通知客户。我不认为这是一种微服务。写一个审计日志,可能是一个微服务,通知客户,处理信用卡。您的系统将通过调用3个必要的微服务来协调业务工作流(上面提到的3个步骤)。因此,您的系统是一个协调器,您不必担心实现业务功能
微服务不会想太多,他们只是按照要求去做,但他们做得很快
简而言之。以一个非常简单的业务函数为例,将RESTAPI放在它前面。你有一个微型服务
微服务有几个有趣的属性:
在所有这些调用中维护一致的事务要困难得多。如果需要回滚,则需要JTA回滚所有其余调用。这可能是一种痛苦,在我的经验中表现得不太好
如果您没有一致的日志记录和一致的事务id,则通过系统跟踪事务以进行故障排除可能非常困难
如果由于可能产生副作用的部署而导致地面不断移动,则可能很难找到引入缺陷的位置
很明显,所有这些REST调用都会非常昂贵。我不一定要谈论传输,因为您的所有微服务可能都位于同一个数据中心。但是,每次通过网络进行呼叫时,都必须封送/解封数据,这可能会很快导致昂贵的CPU开销
# 3 楼答案
下面是一些用Java编写的微服务的具体示例。这些微服务是有教育意义的设计,所以希望这意味着你应该能够跟随
不建议从头开始编写Java微服务,因为有很多框架可以加速您的开发。用于微服务开发的两个最流行的Java框架是Spring Boot和Dropwizard
{a1}使用Dropwizard实现了一个基本的多语言持久新闻提要微服务
feed8 project使用Spring Boot实现相同的功能相同的微服务
甚至还有一个Spring Boot vs Dropwizard article分析差异