java微服务架构都有哪些

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java微服务架构都有哪些相关的知识,希望对你有一定的参考价值。

微服务有助于开发人员用更低的成本和更少的错误来开发程序。
常用的微服务框架:
1、Spring Boot
Spring Boot是Spring的一个特定版本,它通过对配置细节的处理,使微服务构建更加简便。创建Spring Boot旨在自启动任何类型的Spring项目,而不仅仅是微服务。应用程序完成后,Spring Boot将在Web服务器中混合,并输出一个JAR文件,JVM除外。你可以将其视为原始Docker容器,这也是许多负责构建微服务的开发者都非常喜欢Spring Boot的原因。
2、Dropwizard
Dropwizard框架为开发者提供了一个非常简单的模型,里面包含了许多重要的模块,你可以根据需求添加一些业务逻辑,或者配置其他内容,最后你会发现JAR文件非常小,并且能够快速启动。
Dropwizard最大的限制可能是缺乏依赖注入。如果你希望使用依赖项注入来保持代码的整洁和松散耦合,则需要自己添加库,这点和Spring不同,但是现在Dropwizard也支持大多数功能,包括日志记录、健康检查和提供弹性代码。
3、Cricket
是一个用于快速API开发框架。Cricket很小,尽管它包括许多额外的功能,如键值数据存储,以避免连接数据库和调度程序来控制后台重复处理。没有添加复杂性或其他依赖项,因此很容易将代码添加到Cricket并启动独立的微服务。
4、Jersey
开发web服务的标准方法之一是RESTful web服务的Java API(又名JAX-RS),这是Jersey框架中实现的通用规范。这种方法主要依赖于使用注释来指定路径映射和返回细节。从参数解析到JSON打包的所有其他内容都由Jersey处理。
Jersey的主要优点是它实现了JAX-RS标准,这个特性非常受欢迎,一些开发人员习惯将Jersey与Spring Boot结合在一起使用。
5、Play
体验JVM跨语言能力的最佳方式之一是使用Play框架,这是可以与Java或任何其他JVM语言兼容的。它的基础非常现代,具有异步、无状态的模型,不会让试图跟踪用户及其会话数据的线程使服务器过载。还有许多额外的特性可以用来充实网站,比如OpenID、验证和文件上传支持。Play代码库已经发展了十多年,因此你还会发现类似于对XML的支持的这种古老的功能。play既成熟又轻盈,这种组合还是比较有特色的。
当然,常用的Java微服务框架还有Swagger、Helidon、WildFly Thorntail等,在此就不多赘述了。
希望能帮到你,望采纳!!!
参考技术A 1. Spring Boot是什么,解决哪些问题 1) Spring Boot使编码变简单 2) Spring Boot使配置变简单 3) Spring Boot使部署变简单 4) Spring Boot使监控变简单 5) Spring Boot的不足 2. Spring Boot在平台中的定位,相关技术如何融合 1) SpringBoot与... 参考技术B String boot 微型架构首选面xml配置一路使用默认的话你只需要写核心逻辑,导出jar包就可以直接放在服务器上用

使用微服务架构进行分页或过滤数据的策略都有哪些?

【中文标题】使用微服务架构进行分页或过滤数据的策略都有哪些?【英文标题】:What are the strategies available for doing pagination or filtering data using microservices architecture?使用微服务架构进行分页或过滤数据的策略有哪些? 【发布时间】:2014-12-19 05:00:00 【问题描述】:

通常当您有一个单一的应用程序或数据模型时,您可以创建一个连接不同表的 SQL 并对它们应用过滤器。然后,一旦您返回结果集,您也可以分页该数据。但是,如果您使用微服务架构,则数据模型可能会有所不同。我听说 netflix 实际上把它带到了一个极端,他们将每个表都暴露为微服务。在这种情况下如何处理分页和过滤?

我知道他们使用 API Gateway 模式,它可以充当聚合层(可能这就是 RxJava 之类的项目的用武之地)。如果能从使用微服务的人那里获得想法或解决这个问题,那就太好了。

【问题讨论】:

【参考方案1】:

即使只有一张表也可以分页和过滤,对吧?

所以我认为问题在于如何在微服务之间连接表。

我认为人们使用微服务会尽可能避免在微服务之间加入表。如果不能,也许根本不应该在不同的微服务中将表分开。

另一方面,有时,您不需要加入表格即可实现目标。例如,假设您有两个表:

-- from hotel information service
create table t_hotel (
    id VARCHAR(40) not null,
    name varchar(50) not null,
    location varchar(50) not null,
    CONSTRAINT pk_hotel PRIMARY KEY (id)
);

-- from hotel comment service
create table t_hotel_comment (
    id VARCHAR(40) not null,
    hotel_id varchar(40) not null,
    content varchar(50) not null,
    CONSTRAINT pk_hotel_comment PRIMARY KEY (id)
);

现在您要实现一个显示酒店列表的页面,每行显示其评论数。

 ____________________________
| name | location | comments |
| foo  | foooooo  |        2 |
| bar  | barrrrr  |        3 |
 ----------------------------

您可能希望通过一个连接查询或两个 api 调用来实现:

    致电酒店信息服务部门列出酒店。 对于每家酒店,请致电酒店评论服务对 cme​​ts 求和。

也许您对 N+1 性能问题有顾虑,那么您可以将 cmets 计数缓存在 t_hotel 中:

-- from hotel information service
create table t_hotel (
    id VARCHAR(40) not null,
    name varchar(50) not null,
    location varchar(50) not null,
    comments numeric not null,
    CONSTRAINT pk_hotel PRIMARY KEY (id)
);

酒店评论服务每次收到评论,都会发布一个HotelCommentedEvent

HotelCommentedEvent 
    "comment_id": "id",
    "hotel_id": "foo",
    "content": "bar"

并且酒店信息服务使用此事件更新其缓存。因此,您可以通过单个表查询来实现此功能。

【讨论】:

以上是关于java微服务架构都有哪些的主要内容,如果未能解决你的问题,请参考以下文章

50个面试官最喜欢问的java微服务面试题

50个面试官最喜欢问的java微服务面试题

什么是微服务架构啊?

转载微服务,我们需要哪些基础框架?

java线程教程,面试突击版!

Java开发基础面试题,java源码百度云盘