谢幕整理SpringCloud系列01-微服务的开始

我打算把之前在有道云的笔记整理一下,加深自己的印象,同步到博客园。所以有了这个系列!

springcloud练手系列

为什么要使用微服务

传统架构的问题

  • (1)单块应用,耦合严重
  • (2)开发速度慢,新需求
  • (3)不易于扩展和重构
  • (4)不易于技术升级

微服务架构的几大特征:

  • (1)足够单一的职责与功能
  • (2)非常的微型 :几百行~几千行代码
  • (3)面向服务的思想
  • (4)独立开发:团队,技术选型,前后端分离,存储分离,独立部署
  • (5)自动化开发流程:编码,自动化测试,持续集成,自动化部署

微服务的强大作用:

  • (1)迭代速度:你只要管好自己的服务就行了,跟别人没关系,随便你这么玩儿,修改代码,测试,部署,都是你自己的事情,不用考虑其他人,没有任何耦合
  • (2)复用性:拆分成一个一个服务之后,就不需要写任何重复的代码了,有一个功能别人做好了,暴露了接口出来,直接调用不就ok了么
  • (3)扩展性:独立,扩展,升级版本,重构,更换技术
  • (4)完全克服了传统单块应用的缺点

微服务的缺点

  • (1)服务太多,难以管理
  • (2)微服务 = 分布式系统,你本来是一个系统,现在拆分成多块,部署在不同的服务器上,一个请求要经过不同的服务器上不同的代码逻辑处理,才能完成,这不就是分布式系统
  • (3)分布式一致性,分布式事务,故障+容错

微服务的技术栈

  • (1)领域驱动设计:微服务建模

你的任何业务系统都有自己独特的复杂的业务,但是这个时候就是有一个问题,怎么拆分服务?拆成哪些服务?拆成多大?每个服务负责哪些功能?

  • 微服务的建模,模型怎么设计

领域驱动的设计思想,可以去分析系统,完成建模的设计

至少如果你真的很了解你的业务的话,你大概也知道应该如何去拆分这个服务

(2)Spring Cloud:基础技术架构

  • 各个服务之间怎么知道对方在哪里 -> 服务的注册和发现

  • 服务之间的调用怎么处理,rpc,负载均衡

  • 服务故障的容错

  • 服务调用链条的追踪怎么做

  • 多个服务依赖的统一的配置如何管理

(3)DevOps:自动化+持续集成+持续交付+自动化流水线,将迭代速度提升到极致

如果要将微服务的开发效率提升到最高,DevOps,全流程标准化,自动化,大幅度提升你的开发效率

  • (4)Docker:容器管理大量服务

微服务,一个大型的系统,可以涉及到几十个,甚至是上百个服务,比较坑,怎么部署,机器怎么管理,怎么运维


1、Spring Boot的特点

  • (1)快速开发spring应用的框架

spring mvc+spring+mybatis,首先配置一大堆xml配置文件,其次部署和安装tomcat,jetty等容器,跟java web打交道

跟servlet,listener,filter,打交道

手工部署到tomcat或者jetty等容器中,发布一个web应用

spring boot,简单来说,就是看中了这种java web应用繁琐而且重复的开发流程,采用了spring之上封装的一套框架,spring boot,简化整个这个流程

尽可能提升我们的开发效率,让我们专注于自己的业务逻辑即可

  • (2)内嵌tomcat和jetty容器,不需要单独安装容器,jar包直接发布一个web应用
  • (3)简化maven配置,parent这种方式,一站式引入需要的各种依赖
  • (4)基于注解的零配置思想
  • (5)和各种流行框架,spring web mvc,mybatis,spring cloud无缝整合

2、Spring Boot和微服务

  • (1)spring boot不是微服务技术

  • (2)spring boot只是一个用于加速开发spring应用的基础框架,简化工作,开发单块应用很适合

  • (3)如果要直接基于spring boot做微服务,相当于需要自己开发很多微服务的基础设施,比如基于zookeeper来实现服务注册和发现

  • (4)spring cloud才是微服务技术

posted @ 2021-04-22 10:13  谢幕ゾ华丽  阅读(46)  评论(0编辑  收藏  举报