咱们将和你们分享最受欢迎的微服务架构java
Spring Boot
Java 构建 Spring 应用程序已经有很长一段时间了, Spring Boot 是 Spring 的一个特定版本, 它经过对配置细节的处理, 使微服务构建更加简便。建立 Spring Boot 旨在自启动任何类型的 Spring 项目,而不只仅是微服务。应用程序完成后,Spring Boot 将在 web 服务器中混合,并输出一个 JAR 文件, JVM 除外。你能够将其视为原始 Docker 容器。这也是许多负责构建微服务的开发者都很是喜欢 Spring Boot 的缘由。程序员
使用 Spring 开发微服务遵循与 Web 应用相同的 MVC 理念。该框架享有多年 Java 开发中创建的全部深度链接,包括全部主要和次要数据存储、 LDAP 服务器和 Apache Kafka 等消息传递工具的集成。还有许多用于维护运行服务器集合的小特性,好比 Spring Vault ,这是一种用于维护生产环境中服务器所需的密码的工具。全部这些优势都说明了为何 Java 程序员多年来一直喜欢 Spring Boot 的缘由。web
Eclipse MicroProfile
2016 年,Java Enterprise 社区决定清理 Java Enterprise Edition 中的内容,以便人们可使用经典部件构建简单的微服务。他们去除了大量的库, 但保留了处理 REST请求,解析 JSON 和管理依赖注入的功能代码,最终被称为 Eclipse MicroProfile ,其特性为快速而简单。spring
从那之后, MicroProfile 社区制定了一个协议, 每季度发布一个新版本, 同时添加新代码以保持微服务平稳安全地运行。任何 Java EE开发者都会很是熟悉开发过程和代码结构,并且还把配置麻烦给省去了。数据库
Dropwizard
当 Dropwizard 在 2011 年出现时, Dropwizard 框架为开发者提供了一个很是简单的模型,里面包含了许多重要的模块,你能够根据需求添加一些业务逻辑,或者配置其余内容,最后你会发现 JAR 文件很是小,而且可以快速启动。apache
Dropwizard 最大的限制多是缺少依赖注入。若是你但愿使用依赖项注入来保持代码的整洁和松散耦合,则须要本身添加库,这点和 Spring 不一样,可是如今Dropwizard 也支持大多数功能,包括日志记录、健康检查和提供弹性代码。api
Cricket
另一个用于快速 API 开发框架的是 Cricket 。Cricket 很小,尽管它包括许多额外的功能, 如键值数据存储, 以免链接数据库和调度程序来控制后台重复处理。没有添加复杂性或其余依赖项,所以很容易将代码添加到 Cricket 并启动独立的微服务。浏览器
Jersey
开发 web 服务的标准方法之一是 RESTful web 服务的 Java API(又名 JAX-RS),这是 Jersey 框架中实现的通用规范。这种方法主要依赖于使用注释来指定路径映射和返回细节。从参数解析到 JSON 打包的全部其余内容都由 Jersey 处理。安全
Jersey 的主要优势是它实现了 JAX-RS 标准,这个特性很是受欢迎, 一些开发人员习惯将 Jersey 与 Spring Boot 结合在一块儿使用。服务器
Play
体验 JVM 跨语言能力的最佳方式之一是使用 Play 框架,这是能够与 Java 或任何其余 JVM 语言兼容的。它的基础很是现代,具备异步、无状态的模型,不会让试图跟踪用户及其会话数据的线程使服务器过载。还有许多额外的特性能够用来充实网站,好比 OpenID 、验证和文件上传支持。
Play 代码库已经发展了十多年, 所以你还会发现相似于对 XML 的支持的这种古老的功能。play 既成熟又轻盈,这种组合仍是比较有特点的。
Swagger
构建一个 API 看起来就像编写一个监听端口的代码同样简单, 可是 Swagger 的开发人员不这么认为。他们已经建立了一个完整的 API 规范语言 OpenAPI ,你可使用它来讲明你的 API。这彷佛是一个额外的步骤,可是 Swagger 团队还提供了将该规范转换为自动化测试、文档等的代码。
Swagger 配置文件中的 API 很简单,用于实现接口、记录接口的,并提供一组工具来测试构建在其下的代码,甚至还有一种 API 治理机制。
Swagger 是一个 api 生态系统,它不局限于 Java。若是你的团队迁移到 Node.js或其余几十种语言中的任何一种,都有一个 Swagger Codegen 模块将OpenAPI 规范转换成该语言的实现。
Restlet
不一样框架之间最大的区别之一是和其余服务或库的链接数量。Restlet 项目提供了更大的特性和链接集合,它已经与 JavaMail 之类的库集成,避免微服务须要对某些邮件服务器使用 POP、IMAP 或 SMTP ;为防构建大量文本索引和元数据,还集成了 Lucene 和 Solr 。
Restlet 中还有不少特性在持续开发。例如,你不须要使用 JSON,由于它能够直接处理 XML 、CSV、YAML 和其余一些文件格式,此外,它还容许用户从Chrome 浏览器测试 api 。
apache dubbo
Dubbo 是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可经过高性能的 RPC 实现服务的输出和输入功能,能够和 Spring 框架无缝集成。
主要核心部件:
•Remoting: 网络通讯框架,实现了 sync-over-async 和 request-response 消息机制•RPC: 一个远程过程调用的抽象,支持负载均衡、容灾和集群功能•Registry: 服务目录框架用于服务的注册和服务事件发布和订阅
motan
Motan 是一套高性能、易于使用的分布式远程服务调用(RPC)框架。
•支持经过spring配置方式集成,无需额外编写代码便可为服务提供分布式调用能力。•支持集成consul、zookeeper等配置服务组件,提供集群环境的服务发现及治理能力。•支持动态自定义负载均衡、跨机房流量调整等高级服务调度能力。•基于高并发、高负载场景进行优化,保障生产环境下RPC服务高可用。
grpc
gRPC 是一个高性能、开源和通用的 RPC 框架,面向移动和 HTTP/2 设计。目前提供 C、Java 和 Go 语言版本,分别是:grpc, grpc-java, grpc-go. 其中 C 版本支持 C, C++, Node.js, Python, Ruby, Objective-C, PHP 和 C# 支持.
开源中国组织翻译的《gRPC 官方文档中文版》:http://doc.oschina.net/grpc
gRPC 基于 HTTP/2 标准设计,带来诸如双向流、流控、头部压缩、单 TCP 链接上的多复用请求等特。这些特性使得其在移动设备上表现更好,更省电和节省空间占用。
kubernates
kubernetes,简称K8s,是用8代替8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单而且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。
传统的应用部署方式是经过插件或脚原本安装应用。这样作的缺点是应用的运行、配置、管理、全部生存周期将与当前操做系统绑定,这样作并不利于应用的升级更新/回滚等操做,固然也能够经过建立虚拟机的方式来实现某些功能,可是虚拟机很是重,并不利于可移植性。
新的方式是经过部署容器方式实现,每一个容器之间互相隔离,每一个容器有本身的文件系统 ,容器之间进程不会相互影响,能区分计算资源。相对于虚拟机,容器能快速部署,因为容器与底层设施、机器文件系统解耦的,因此它能在不一样云、不一样版本操做系统间进行迁移。
容器占用资源少、部署快,每一个应用能够被打包成一个容器镜像,每一个应用与容器间成一对一关系也使容器有更大优点,使用容器能够在build或release 的阶段,为应用建立容器镜像,由于每一个应用不须要与其他的应用堆栈组合,也不依赖于生产环境基础结构,这使得从研发到测试、生产能提供一致环境。相似地,容器比虚拟机轻量、更“透明”,这更便于监控和管理。
QQ群号:763628645
QQ群二维码以下, 添加请注明:姓名+地区+职位,不然不予经过
本文分享自微信公众号 - 杨建荣的学习笔记(jianrong-notes)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。