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

微服务(一)---架构与选型

微服务架构的概述应用架构的发展应用是可以独立运行的程序代码,提供相对完善的业务功能.目前的软件架构有三种架构类型:业务架构应用架构技术架构他们之间的甚是:业务

微服务架构的概述

应用架构的发展

应用是可以独立运行的程序代码,提供相对完善的业务功能. 目前的软件架构有三种架构类型:

  • 业务架构
  • 应用架构
  • 技术架构

他们之间的甚是: 业务架构决定应用架构,技术架构支撑着应用架构. 应用架构的发展历程:

  • 单体架构: 最古老的单体应用,没有任何应用拆分,整体就是一个war包
  • 分布式应用 | SOA架构: 根据业务进行划分服务,不同的业务建立不同的服务,不同的服务之间通过服务接口进行数据交互(网络通信).
  • 微服务架构: 将业务功能拆分为多个相互独立的微服务,各个微服务之间松耦合,通过各种远程协议进行同步 / 异步通信,各服务之间可以独立部署,扩 / 缩容以及升 / 降级.

每种技术架构都有其优缺点,存在即合理,不同的业务场景使用不同的应用架构,不一定说最新的架构就是最适合你的.

重点说一下微服务架构,在重新定义SpringCloud实战中介绍了5种微服务架构技术选型,这里说两种,我用过的,常听到的.(先提及一个概念 CAP理论: 一致性,高可用,分区容错性)

参数 SpringCloud Dubbo
功能 微服务完整解决方案 服务治理(定位以及发现问题)框架
通信 REST / HTTP RPC(远程方法调用)协议
服务注册/ 发现 Ecureka(AP) ZK(CP),Nacos
负载均衡 Ribbon 客户端负载
容错机制 六种容错策略 六种容错策略
熔断机制 Hystrix
配置中心 Spring Cloud Config Nacos
网关 zuul,Gateway
服务监控 Hystrix + Turbine Dubbo + Monitor
链路监控 Sleuth + Zipkin
多语言 REST支持多语言 只支持Java
社区活跃 高(背靠Spring) 高(背靠阿里)
微服务的解决方案
  1. 基于SpringCloud的微服务解决方案

SpringCloud的技术选型是中立的,可随意搭配更换.

组件 方案1 方案2 方案3
服务发现 Eureka Consul etcd,阿里的Nacos
共用组件 服务间调用组件Feign,负载均衡组件Ribbon,熔断器Hystrix
网关 性能低: zuul; 性能高: Spring Cloud Gateway 自研网关中间件
配置中心 Spring Cloud Config, 携程阿波罗, 阿里Nacos
全链路监控 zipkin(不推荐),Pinpoint(不推荐),Skywalking(推荐)
搭配使用 分布式事务,容器化,Spring Cloud与DDD,gRPC
  1. 基于Dubbo实现微服务解决方案

Dubbo不是一个微服务的全面解决方案,而是专注于RPC领域成为微服务生态体系的一个重要的组件,所以说基于Dubbo的微服务组件是: Dubbo + Nacos + 其他. (Nacos的定位是一个更易于帮助构建云原生应用的动态服务发现,配置和服务管理平台)

Spring Cloud和Dubbo

Spring Cloud和Dubbo的比较其实是针对REST和RPC之间的对比,其余方面没有对比性,因为领域不同,对于Spring Cloud提供的一套完整的微服务解决方案,提供分布式情况下的各种解决方案;而Dubbo则是专注于RPC.

Spring Cloud的设计理念是Integrate Everything,即充分利用现有的开源组件,在他们之上设计一套统一规范/接口使他们能够接入Spring Cloud体系并能够无缝切换底层实现.

2018年6月,Spring Cloud中国社区开源名为spring-cloud-dubbo项目,目标是将dubbo融入Spring Cloud体系中,使微服务之间的调用同时具备RESTful和Dubbo调用的能力,做到对业务代码无侵入,无感知,在使用过程中引入jar包则在微服务间调用时使用Dubbo,去掉jar则使用默认的RESTful.


推荐阅读
  • 聊聊Dubbo(一):为何选择 ... [详细]
  • Sleuth+zipkin链路追踪SpringCloud微服务的解决方案
    在庞大的微服务群中,随着业务扩展,微服务个数增多,系统调用链路复杂化。Sleuth+zipkin是解决SpringCloud微服务定位和追踪的方案。通过TraceId将不同服务调用的日志串联起来,实现请求链路跟踪。通过Feign调用和Request传递TraceId,将整个调用链路的服务日志归组合并,提供定位和追踪的功能。 ... [详细]
  • 熟练掌握Spring Cloud,终于成为Java工程师的面试门槛 ... [详细]
  • [翻译]微服务设计模式5. 服务发现服务端服务发现
    服务之间需要互相调用,在单体架构中,服务之间的互相调用直接通过编程语言层面的方法调用就搞定了。在传统的分布式应用的部署中,服务地 ... [详细]
  • TiDB | TiDB在5A级物流企业核心系统的应用与实践
    TiDB在5A级物流企业核心系统的应用与实践前言一、业务背景科捷物流概况神州金库简介二、现状与挑战神州金库现有技术体系业务挑战应对方案三、TiDB解决方案测试迁移收益问题四、说在最 ... [详细]
  • 分布式大型互联网企业架构!
    2019独角兽企业重金招聘Python工程师标准摘要:开发工具1.EclipseIDE:采用Maven项目管理,模块化。2.代码生成: ... [详细]
  • 服务网关与流量网关
    一、为什么需要服务网关1、什么是服务网关传统的单体架构中只需要开放一个服务给客户端调用,但是微服务架构中是将一个系统拆分成多个微服务,如果没有网关& ... [详细]
  • 说出来你可能不信,我用三天做了一个完整的项目
    Java在人工智能中能起到什么作用?作为编程语言中的扛把子,Java20多年稳定不倒,就在于它的稳定性,维护成本极低。这使得 ... [详细]
  • Istio是一个用来连接、管理和保护微服务的开放平台。Istio提供一种简单的方式来为已部署的服务建 ... [详细]
  • 这也太简单了!轻松操作Feign 服务调用使用 Zipkin 链路追踪!
    0、介绍分布式微服务时代,方便了业务的快速增长和服务的稳定,但是系统出现问题后,面对同业务多服务排查起来令人头大。这时候领导就想着集成分布式追踪系统。Zipkin是T ... [详细]
  • 如果说以比特币为代表的货币区块链技术为1.0,以以太坊为代表的合同区块链技术为2.0,那么实现了完备的权限控制和安全保障的Hyperledger项目毫无疑问代表着区块链技术3.0 ... [详细]
  • 云原生的十大开源项目是什么
    这篇“云原生的十大开源项目是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值 ... [详细]
  • 分布式服务框架和原理简章
    应用架构演进这里的架构演进应该是从服务化的角度来说,应该说随着业务发展,应用规模扩大,系统的一些公共服务就会抽取出来,独立开发,部署,维护,用来解决并发,扩展,维护的问题。传统垂直 ... [详细]
  • 一次上线事故,30岁+的程序员踩坑经验之谈
    本文主要介绍了一位30岁+的程序员在一次上线事故中踩坑的经验之谈。文章提到了在双十一活动期间,作为一个在线医疗项目,他们进行了优惠折扣活动的升级改造。然而,在上线前的最后一天,由于大量数据请求,导致部分接口出现问题。作者通过部署两台opentsdb来解决问题,但读数据的opentsdb仍然经常假死。作者只能查询最近24小时的数据。这次事故给他带来了很多教训和经验。 ... [详细]
  • 基于.NET Core框架nacos的简单应用
    什么是Nacos?服务(Service)是Nacos世界的一等公民。Nacos支持 ... [详细]
author-avatar
年轻的蒲山公_777
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有