读书笔记-SpringCloudAlibaba微服务原理与实战-谭锋-【未完待续】

SpringCloudAlibaba微服务原理与实战 谭锋 电子工业出版社ISBN-9787121388248仅供参考, 自建索引, 以备后查一、应用架构演进、微服务发展史二、SpringCloud简介三、SpringBoot、自动装配、自定义Starter四、ZooKeeper、Dubbo (Dubbo、Apache Dubbo、Dubbo S...
摘要由CSDN通过智能技术生成

SpringCloudAlibaba微服务原理与实战 谭锋 电子工业出版社

ISBN-9787121388248

仅供参考, 自建索引, 以备后查

一、应用架构演进、微服务发展史

1.单体架构

        一般来说,如果一个WAR包或JAR包就能包含一个应用程序的所有功能,我们就称其为 单体架构。早期互联网公司或创业型公司中,这种架构由于足够简单,能够快速开发上线,且初期用户量不大,单体架构足以满足业务的正常运行。

2.集群及垂直化

        若应用程序需要长期运营,则单体架构面临了诸多挑战,用户量增大,服务器负载增大,业务场景越来越复杂。慢慢的,服务器的响应会越来越慢。而且单体架构中,随着业务复杂程序的提升,业务之间的耦合度越来越高,对代码维护和升级等也愈发困难。

        此时,可以横向扩展,即增加服务器,单台变集群;或者把业务拆分,减少耦合度,即增加Tomcat服务器,变为服务集群,每个Tomcat服务器包含一个或多个业务子系统;同时拆分数据库,分库分表。

3.SOA (Service-Oriented Architecture) 面向服务架构

        在上面介绍的集群模式中,各个业务在一个或多个Tomcat服务器中,但是业务之间存在调用关系,则会存在这么多检查逻辑,共享业务等,这些都会产生非常多的冗余代码。

        针对以上问题,SOA架构应运而生,它和 面向过程、面向对象、面向组件的思想一致,是利用软件组建及开发的方式。SOA架构目标是把通用的,会被上层服务调用的共享业务提取封装为基础服务,这些基础服务可以被重用且相对独立。总体来说,SOA架构解决信息孤岛,增强了共享业务的重用。

4.微服务架构

         泛泛来讲,微服务是SOA的子集,对可重用业务服务的进一步优化,即把服务拆分的更加细化,如原本10个服务(模块)拆分为100个微服务(模块)。不过一旦如此,服务的构建、发布及运维复杂度也会成倍增加,所以微服务的前提是 软件交付链路 及 基础设施的成熟。在此书作者来看,微服务是SOA服务化思想的最佳实践。

        SOA关注点在于服务的重用及解决信息孤岛;而微服务关注的是解耦,虽然特定程序上来说,解耦和重用类似;另外,微服务更多的关注于应用的版本更新,持续交付;同时,由于服务粒度细化,开发运维更加重要,所以为了避免运行环境的一致性问题,微服务与容器技术关联的更加紧密。

        业务构建为可独立运行的微服务后,每个微服务仅关心某个特定功能,服务之间采用RESULT API通信。开发人员更加能关注某个特定业务,如注册服务等。

 微服务的优势:

        复杂度可控:一句话来讲,就是拆分颗粒度,细化到极致还是达到某种程序;

        技术灵活度:只需要遵循对外接口访问规则,每个微服务的实现自由度高;

        可扩展性强:单个微服务可以保留一个,亦可以作为集群来部署;

        独立部署:微服务单独运行,不影响到其它业务;

        容错性:若某个微服务故障,调用者可以重试、降级、熔断等或默认返回调用结果。

面临的挑战:

        微服务并不能解决所有问题,虽然本身优势人多,但也带来了诸多挑战。如:数据库如何拆分、API交互、开发维护和运维等。更多的是如下问题:

        故障排查:一个请求可能会调用数个微服务,交互链路复杂,若要定位故障位置比较困难;

        服务监控:单体架构中很容易实现监控,毕竟所有功能集中在一起。而微服务架构中,服务监控比较复杂,成千上万个微服务需要监控,性能开销较大;

        分布式架构的复杂性:微服务其实也是一个分布式系统,涉及到各个服务之间的远程通信,所以通信的弊病,网络延迟和网络故障是很淘宝网的;

        服务之间的依赖:服务之间的调用问题,若依赖较多,则系统调用显而易见的会复杂的多;

        运维成本:保证成千上万微服务正常支行,挑战巨大,如:快速扩容、单点故障、快速部署和统一管理等。

典型的微服务架构:

除了图中提到的,还需要考虑:分布式配置中心、服务路由、负载均衡、熔断限流和链路监控等

二、SpringCloud简介

Spring Cloud 简述

        微服务架构最先考虑的是服务间的远程通信问题,目前有许多的RPC框架,如 Thrift、Dubbo、Motan、gPRC等。接着要考虑服务之间的动态感知,总不能硬编码调用地址吧。由于此类问题浮现,最终在2015年诞生了SpringCloud,目前流行的版本有 Spring Cloud Netflix 、 Spring Cloud Alibaba 和 Spring Cloud Consul。

        SpringCloud主要致力于解决如下问题:

  • Distributed/versioned configuration 分布式及版本配置;
  • Service registration and discovery 服务的注册与发现;
  • Routing 服务路由;
  • Service-to-service calls 服务间的调用;
  • Load balancing 负载均衡;
  • Circuit Breakers 熔断;
  • Global locks 全局锁;
  • Leadership election and cluster state 主服务的选举及集群状态;
  • Distribu
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值