热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

微服务与SpringCloud

微服,务,与,sp

微服务是继SOA之后流行起来的一种系统架构模式。因它紧随SOA之后,所以有必要对他们先作个比较。

SOA vs 微服务

关于二者的比较表格,我在谷歌上搜索的一篇文章分析的挺好,现引用如下。

面向服务架构 微服务架构
出现于1990's年代 出现于2000's年代
最大化应用服务的重用性 关注解耦
系统变化需要修改整体 系统变化是创建新服务
DevOps和持续发布开始变得流行但不是主流 重点关注DevOps和持续发布
聚焦于业务系统重用 “边界上下文”越发重要
使用ESB通信 使用简单消息系统通信
支持多种消息协议 使用轻量级协议诸如:HTTP, REST等
对部署在其上的所有服务使用通用平台 通常使用云平台而非应用服务器
Docker不太流行 容器与微服务工作的非常协调
SOA服务共享数据存储 每个微服务可以拥有独立的存储服务
通用的治理和标准 松散治理,关注团队协作与自由选择

SOA vs MicroService

微服务

微服务这么流行,肯定有其优势所在。不过也不能不看到它的劣势噢。

优势

  • 每个模块都是独立的,所以你可以选择不同的开发语言以获得语言级别的好处
  • 每个模块都可以有自己的数据库,NoSQL或者关系型
  • 开发人员构建和维护微服务所以他们对模块非常熟悉。跨功能的成员一些协作完成服务

劣势

  • 服务调用其它服务,所以对于大型项目来说,难以跟踪调用过程以及监控服务
  • 服务之间通过RESTful API调用所以性能可能没有整体的进程内通信的系统高
  • 难以调试,尤其是一个服务调用了一系列其它服务
SpringCloud

如何扬长避短,更好更方便地利用微服务呢。

SpringCloud提供以下特性来强化微服务的优势、弥补劣势

  • 分布式/版本化的配置
  • 服务注册和发现
  • 路由
  • 服务到服务的调用
  • 负载均衡
  • 熔断(Circuit Breaker)
  • 全局锁
  • leader选举及集群状态
  • 分布式消息
SpringCloud主要项目

Spring Cloud Config

统一配置中心。

Spring Cloud Netflix

服务发现

Spring Cloud Bus

一个事件总线,利用分布式消息系统将服务和服务实例连到一起。可用于在集群内传播状态变化(如配置变化事件)

Spring Cloud for Cloud Foundry

集成你的应用到Pivotal Cloud Foundry,提供并且让实现SSO和OAuth2来保护资源变得更加容易。

Spring Cloud Open Service Broker

提供一个用于构建实现了Open Service Broker API的服务的Broker的起始点

Open Service Broker API连接开发者到一个全球的服务生态环境,该项目给开发者、ISVs、SaaS厂商提供一个单一的、简单的和完美的方式去发布服务到原生云平台上(诸如Cloud Foundry, OpenShift, Kubernetes)

Open Service Broker 项目

Open Service Broker API定义

Spring Cloud Cluster

提供基于Zookeeper、Redis、Hazelcast、Consul的领头选举、通用状态机模式的抽象及实现。

Spring Cloud Consul

基于Hashicorp Consul的服务发现及配置管理。

Spring Cloud Security

提供对基于负载均衡的OAuth2 rest client和authentication header的支持,依赖了Zuul proxy。

Spring Cloud Sleuth

应用于Spring Cloud的分布式追踪功能,与Zipkin, HTrace and log-based (e.g. ELK) tracing 相兼容。

Spring Cloud Data Flow

一个cloud-native的服务编排,易用的DSL、drag-and-drop GUI,REST-APIs 一起全面简化了基于服务编排的数据管道。

Spring Cloud Stream

一个轻量级的事件驱动微服务框架,便于快速构建连接到外部系统的应用。简单的声明模型可以使用Apache Kafka或RabbitMQ在Spring Boot应用间收发消息。

Spring Cloud Stream App Starters

一系列基于Spring Boot的Spring集成应用程序,提供与外部应用的集成。

Spring Cloud Task

一个短期的微服务框架,快速构建执行有限数量的数据处理的应用。简单的声明就可以增加功能性或非功能性特性到Spring Boot中。

Spring Cloud Task App Starters

一系列单机版的可执行应用程序,可以拥有按需用例:比如数据库迁移、机器学习、定时操作。这些应用可以运行于各种独立平台,比如:Cloud Foundry、Apache Yarn、 ApacheMesos、Kubernetes、Docker甚至你的笔记本上。

Spring Cloud Zookeeper

基于Apache Zookeeper的服务发现及配置管理。

Spring Cloud Connectors

使得运行于各种平台上的PaaS应用能够方便地连接到后端服务,比如数据库、消息Broker。(这个项目原先叫作Spring Cloud)

Spring Cloud Starters

Spring Boot风格的启动项目,简化服务消费方Spring Cloud的依赖管理。

Spring Cloud CLI

Spring Boot CLI插件,用来快速使用Groovy语言创建Spring Cloud组件应用

Spring Cloud Contract

是一揽子有关帮助用户成功地实现“消费端驱动契约”方式解决方案

Spring Cloud Gateway

是一款基于智能的、可编程的路由的Project Reactor

Spring Cloud OpenFeign

为Spring Boot应用提供通过自动化配置和绑定到Spring Environment和其它编程模型风格的集成。

原文发表于http://www.yesdata.net/2018/03/15/microservice-and-spring-cloud/

·


推荐阅读
  • 为何Compose与Swarm之后仍有Kubernetes的诞生?
    探讨在已有Compose和Swarm的情况下,Kubernetes是如何以其独特的设计理念和技术优势脱颖而出,成为容器编排领域的领航者。 ... [详细]
  • 从理想主义者的内心深处萌发的技术信仰,推动了云原生技术在全球范围内的快速发展。本文将带你深入了解阿里巴巴在开源领域的贡献与成就。 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • 本文总结了一次针对大厂Java研发岗位的面试经历,探讨了面试中常见的问题及其背后的原因,并分享了一些实用的面试准备资料。 ... [详细]
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
  • 微服务优雅上下线的最佳实践
    本文介绍了微服务上下线的正确姿势,避免使用 kill -9 等粗暴手段,确保服务的稳定性和可靠性。 ... [详细]
  • 本文详细介绍了Java代码分层的基本概念和常见分层模式,特别是MVC模式。同时探讨了不同项目需求下的分层策略,帮助读者更好地理解和应用Java分层思想。 ... [详细]
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • 本文详细介绍如何在华为鲲鹏平台上构建和使用适配ARM架构的Redis Docker镜像,解决常见错误并提供优化建议。 ... [详细]
  • 本文详细记录了 MIT 6.824 课程中 MapReduce 实验的开发过程,包括环境搭建、实验步骤和具体实现方法。 ... [详细]
  • 本文介绍了如何将Spring属性占位符与Jersey的@Path和@ApplicationPath注解结合使用,以便在资源路径中动态解析属性值。 ... [详细]
  • 深入理解Java多线程与并发机制
    本文探讨了Java多线程和并发机制的核心概念,包括多线程类的分类、执行器框架、并发容器及控制工具。通过详细解析这些组件,帮助开发者更好地理解和应用多线程技术。 ... [详细]
  • Java EE 平台集成了多种服务、API 和协议,旨在支持基于 Web 的多层应用程序开发。本文将详细介绍 Java EE 中的 13 种关键技术规范,帮助开发者更好地理解和应用这些技术。 ... [详细]
  • Docker 中创建 CentOS 容器并安装 MySQL 进行本地连接
    本文详细介绍了如何在 Docker 中创建 CentOS 容器,并在容器中安装 MySQL 以实现本地连接。文章内容包括镜像拉取、容器创建、MySQL 安装与配置等步骤。 ... [详细]
  • Juval Löwy主张,每个类都应被视为服务,这并非是为了让服务无处不在,而是因为微服务是经过深思熟虑后系统分解的自然结果。在他的设计和构建的系统中,这种理念有助于提高模块化、可维护性和扩展性。通过将每个类视为独立的服务,系统能够更好地应对复杂性,实现更灵活的部署和更高的性能。 ... [详细]
author-avatar
cf15ron
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有