微服务SpringCloudAlibaba——简介(1)

微服务SpringCloudAlibaba——简介(1)

微服务SpringClout Alibaba——Nacos注册中心、配置中心和Nacos集群(2)

微服务SpringClout Alibaba——Sentinel流控、熔断、降级(3)

微服务SpringClout Alibaba——Seata分布式事务(4)

微服务SpringCloud——GateWay网关(5)

 

目录

前言

单体框架

什么是单体框架

单体框架存在的问题

微服务

微服务最初是由Martin Fowler提出来的他的理解如下:

微服务的优势:

微服务宇SOA的关系

微服务整体结构

springcloud技术站


前言

版本说明和选择:https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E

说到微服务,首先我们先谈谈框架的变迁

单体框架

什么是单体框架

在软件设计的时候经常提到和使用经典的3层模型,即表现层,业务逻辑层,数据访问层。虽然在软件设计中划分了3层模型,但是对业务场景没有划分,一个典型的单体架构就是将所有的业务场景的表现层,业务逻辑层,数据访问层放在一个工程中最终经过编译,打包,部署在一台服务器上。此时服务架构如图:

单体框架存在的问题

在小型应用的初期,访问量小的时候这种架构的性价比还是比较高的,开发速度快,成本低,但是随着业务的发展,逻辑越来越复杂,代码量越来越大,代码得可读性和可维护性越来越低。用户的增加,访问量越来越多单体架构的应用并发能力十分有限。

可能会有人想到将单体应用进行集群部署,并增加负载均衡服务器,再来个缓存服务器和文件服务器,数据库再搞个读写分离。这种架构如图:

 

这种架构虽然有一定的并发能力,及应对一定复杂业务,但是依然没有改变系统为单体架构的事实。大量的业务必然会有大量的代码,代码得可读性和可维护性依然很差。如果面对海量的用户,它的并发能力依然不够。基于以上单体架构系统的不足,微服务架构就应运而生。

微服务

微服务最初是由Martin Fowler提出来的他的理解如下:

微服务架构就是将单一程序开发成一个微服务,每个微服务运行在自己的进程中,并使用轻量级的机制通信,通常是HTTP RESTFUL API。这些服务围绕业务能力来划分,并通过自动化部署机制来独立部署。这些服务可以使用不同的编程语言,不同数据库,以保证最低限度的集中式管理。

总的来说:

总结起来微服务就是将一个单体架构的应用按业务划分为一个个的独立运行的程序即服务,它们之间通过HTTP协议进行通信(也可以采用消息队列来通信,如RoocketMQ,Kafaka等),可以采用不同的编程语言,使用不同的存储技术,自动化部署(如Jenkins)减少人为控制,降低出错概率。服务数量越多,管理起来越复杂,因此采用集中化管理。例如Eureka,Zookeeper等都是比较常见的服务集中化管理框架。

微服务的优势:

将复杂的业务拆分成多个小的业务,每个业务拆分成一个服务,将复杂的问题简单化。利于分工,降低新人的学习成本。

微服务系统是分布式系统,业务与业务之间完全解耦,随着业务的增加可以根据业务再拆分,具有极强的横向扩展能力。面对搞并发的场景可以将服务集群化部署,加强系统负载能力。

服务间采用HTTP协议通信,服务与服务之间完全独立。每个服务可以根据业务场景选取合适的编程语言和数据库。

微服务每个服务都是独立部署的,每个服务的修改和部署对其他服务没有影响。

微服务宇SOA的关系

SOA即面向服务的架构,SOA是根据企业服务总线(ESB)模式来整合集成大量单一庞大的系统,微服务可以说是SOA的一种实现,将复杂的业务组件化。但它比ESB实现的SOA更加的轻便敏捷和简单。

微服务整体结构

一个完整的微服务项目结构如下:

springcloud技术站

服务注册中心:

Eureka:官方停止更新,并且已经有更好的替代产品了,可以使用,但是官方已经不建议使用了。

Zookeeper:某些老系统,以前是用的Zookeeper + Dubbo,后来做技术升级,结果发现SpringCloud的Eureka停更了,然后就用了最少的技术切换,那么就用了Zookeeper做注册中心。

Consul:go语言开发的,也是一个优秀的服务注册框架,但是使用量较少,风头都被Nacos抢了。

Nacos:来自于SpringCloudAlibaba,在企业中经过了百万级注册考验的,不但可以完美替换Eureka,还能做其他组件的替换,所以强烈建议使用,是学习的重点。

服务调用:

Ribbon:也进入了维护状态,停止更新了,但是Spring官方还在使用。

LoadBalancer:Spring官方推出的一个新的组件,打算逐渐取代掉Ribbon,但是现在还处于萌芽状态。

服务调用2:

Feign:Netflix 公司产品,已经停止更新了。

OpenFeign:Spring社区等不了Netflix更新了,然后就自己做了一个组件,不用Feign了。

服务降级:

Hystrix:官网不推荐使用,但是中国企业中还在大规模使用。

Resilience4J:官网推荐使用,但是国内很少用这个。

Sentienl:来自于SpringCloudAlibaba,在中国企业替换Hystrix的组件,国内强烈建议使用。

服务网关:

Zuul:Netflix 公司产品,公司内部产生分歧,有的人想自己出一个Zuul2。

Zuul2:也是Netflix 公司准备出的产品,但是由于内部分歧,所以Zuul2已经胎死腹中了。

gateway:Spring社区自己出的网关组件,官方隆重介绍和极度推荐的网关服务组件。

服务配置:

Config:目前也在使用,风头被Nacos抢了。

Nacos:来自于SpringCloudAlibaba,后来居上,把Config给替换了。

服务总线:

Bus:SpringCloud原生的服务总线组件,现在风头也被Nacos抢了。

Nacos:来自于SpringCloudAlibaba,后来居上,把Bus给替换了。

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值