网站首页 > 博客文章 正文
常见的微服务架构
随着程序规模的扩大以及复杂性的增加,越来越多的Java程序员选择使用微服务进行项目开发。微服务的出现有助于开发人员用更低的成本和更少的错误来开发程序,因此成为Java开发人员需要掌握的最重要的技术之一。下面介绍几种Java微服务架构。
1.2.1 Spring Cloud
Spring Cloud是Spring旗下的项目之一,Spring擅长的就是集成,把世界上的好框架“拿”过来,集成到自己的项目中。Spring Cloud的官方简介如图1-6所示。
图1-6中“OVERVIEW”的相关描述翻译如下。
Spring Cloud为开发人员提供了工具来快速构建分布式系统中的一些常见模式(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态)。分布式系统的协调导致了“样板模式”,开发人员使用Spring Cloud可以快速实现这些模式的服务和应用程序。它们在任何分布式环境下都能很好地工作,包括开发者自己的笔记本计算机、裸机数据中心和云计算等托管平台。Spring Cloud是一个基于Spring Boot实现的微服务架构开发工具。SpringCloud有丰富的子组件,其架构如图1-7所示。
(1)Spring Cloud Config:配置和管理开发工具包,可以把配置放到远程服务器,目前支持本地存储,Git存储以及Subversion存储。
(2)Spring Cloud Bus:事件、消息总线,用于在集群(如配置变化事件)中传播状态变化信息,可与Spring Cloud Config联合实现热部署。
(3)Spring Cloud Netflix:针对多种Netflix组件提供的开发工具包,包括Eureka、Hystrix、Zuul、Archaius等。
(4)Spring Cloud Eureka:云端负载均衡,一个基于 REST 的服务,用于定位服务,以实现云端的负载均衡和中间层服务器的故障转移。
(5)Spring Cloud Hystrix:容错管理工具,旨在通过控制服务和第三方库的节点,对延迟和故障提供更强大的容错能力。
(6)Spring Cloud Zuul:边缘服务工具,提供动态路由、监控、弹性、安全等的边缘服务。
(7)Spring Cloud Archaius:配置管理API,包含一系列配置管理API,提供动态类型化属性、线程安全配置操作、轮询框架、回调机制等功能。
(8)Spring Cloud for Cloud Foundry:通过OAuth 2.0协议绑定服务到Cloud Foundry,Cloud Foundry是VMware推出的开源平台即服务(Platformas a Service,PaaS)云平台。
(9)Spring Cloud Sleuth:日志收集工具包,封装了Dapper、Zipkin和HTrace操作。
(10)Spring Cloud Data Flow:大数据操作工具,通过命令行方式操作数据流。
(11)Spring Cloud Security:安全工具包,为应用程序添加安全控制,主要是指OAuth 2.0。
(12)Spring Cloud Consul:封装了Consul操作。Consul是一个服务发现与配置工具,与Docker可以无缝集成。
(13)Spring Cloud Zookeeper:操作ZooKeeper的工具包,用于使用ZooKeeper方式的服务注册和发现。
(14)Spring Cloud Stream:数据流操作开发包,封装了Redis、RabbitMQ、Kafka等发送、接收的消息。
(15)Spring Cloud CLI:基于Spring Boot CLI,可以以命令行方式快速建立云组件。Spring Cloud从设计之初就考虑了绝大多数互联网公司架构演化所需的功能,因此Spring Cloud备受广大开发者的欢迎,本书也是基于Spring Cloud框架来完成微服务架构项目的。
1.2.2 Dubbo
Dubbo是阿里巴巴公司开源的一个高性能、优秀的服务框架,使得应用可通过高性能的远程过程调用(Remote Procedure Call, RPC) 实现服务的输出和输入功能,可以和Spring框架无缝集成。Dubbo是一款高性能、轻量级的开源Java RPC框架,其架构如图1-8所示。它提供的核心能力包括:面向接口的远程方法调用、智能容错和负载均衡、服务自动注册和发现。
服务提供者先启动服务,然后向注册中心注册服务。服务消费者订阅服务,如果订阅到自己想获得的服务,可以完成服务调用;如果没有订阅到自己想获得的服务,它会不断的尝试订阅。新的服务注册到注册中心以后,注册中心会将这些服务通知到服务消费者。服务提供者和服务消费者通过异步的方式发送消息至监控平台,监控平台可以完成服务计数功能。
1.2.3 Dropwizard
Dropwizard框架为开发者提供了一个非常简单的模型,里面有许多重要的模块,使用者可以根据需求添加业务逻辑,或者配置其他内容。该框架使用的JAR文件非常小,并且能够快速启动。
Dropwizard最大的限制可能是缺乏依赖注入。如果希望使用依赖注入来保持代码的整洁和松耦合,则需要自己添加库,这点和Spring不同。现在Dropwizard也支持大多数功能,包括日志记录、健康检查和提供弹性代码等。
1.2.4 Cricket
Cricket是一个用于快速开发API的框架。Cricket很小,但它包括许多额外的功能,如键值数据存储,可避免连接数据库和调度程序控制后台重复处理。由于没有添加其他复杂的依赖项,因此你很容易将代码添加到Cricket并启动独立的微服务。
1.2.5 Jersey
开发Web服务的标准方法之一是RESTful Web服务的Java API(又名JAX-RS),这是Jersey框架中实现的通用方法。这种方法主要依赖于注释来指定路径映射和返回细节。从参数解析到JSON打包的所有其他内容都由Jersey处理。Jersey的主要优点是实现了JAX-RS,这个特性非常受欢迎,因此一些开发人员习惯将Jersey与Spring Boot结合在一起使用。
1.2.6 Play
体验JVM(Java虚拟机)跨语言能力的最佳方式之一是使用Play框架,该框架是可以与Java或任何其他JVM语言兼容的。它的基础非常现代,具有异步、无状态的模型,不会让试图跟踪用户及其会话数据的线程使服务器过载。此外,Play还有许多额外的特性可以用来充实网站,比如OpenID、验证和文件上传支持。Play代码库已经发展了10多年,因此使用者还会发现类似于对可扩展标记语言(Extensible Markup Language,XML)的支持这种“古老”的功能。Play既成熟又轻盈,还比较有特色。
- 上一篇: 谷歌云发生全球范围大规模宕机(谷歌云什么时候上线的)
- 下一篇: 分布式RPC最全详解(图文全面总结)
猜你喜欢
- 2025-07-23 阿里二面必问:Dubbo支持几种负载均衡策略?
- 2025-07-23 Dubbo3.0应用级服务发现源码分析(dubbo服务引入)
- 2025-07-23 多年开发大牛用3700字带你搞懂阿里巴巴开源组件Nacos!
- 2025-07-23 七年Java开发的一路辛酸史:分享面试京东、阿里、美团后的心得
- 2025-07-23 牛逼!阿里又要发布一个逆天的开源框架了...
- 2025-07-23 Dubbo概述(dubbo详解)
- 2025-07-23 阿里一面:说一说Java、Spring、Dubbo三者SPI机制的原理和区别
- 2025-07-23 阿里巴巴为什么不用 ZooKeeper 做服务发现?
- 2025-07-23 白话DUBBO原理,通俗易记,再也不怕面试时讲不清楚了
- 2025-07-23 阿里:Spring Cloud对比下Dubbo,什么场景下该使用Spring Cloud?
你 发表评论:
欢迎- 最近发表
-
- 谷歌云推出印度尼西亚“BerdAIa for Security”网络安全计划
- 谷歌:已解决全球服务中断问题,受影响平台涉及Spotify、Discord等
- 不再单一依赖英伟达,OpenAI被曝开始租用谷歌AI芯片训练ChatGPT
- 谷歌云代理商:怎样通过谷歌云服务器搭建社交平台?
- 谷歌云服务遭遇全球性宕机,影响多家互联网巨头
- OpenAI正式将谷歌云纳入供应商名单
- 谷歌给Agent造了个“微信”,和MCP功能互补,多智能体协作更顺畅了
- OpenAI“去微软化”加速:最新引入谷歌(GOOGL.US)构建混合云生态
- 谷歌给Agent造了个“微信”,和MCP功能互补,多智能体协作更顺畅
- 谷歌与OpenAI携手:云合作背后的机遇与隐忧
- 标签列表
-
- ifneq (61)
- 字符串长度在线 (61)
- googlecloud (64)
- flutterrun (59)
- 系统设计图 (58)
- powershellfor (73)
- messagesource (71)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- qcombobox样式表 (68)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)