一、单体架构

  • 所有功能,所有模块都耦合在一个系统里面,如传统的一MVC。 需要重新编译测试,重新部署。
  • 伸缩性差
  • 可靠性差
  • 系统迭代困难
  • 跨开发语言程序低
  • 团队协作麻烦

二、微服务架构

常见架构风格:

  • C/S
  • B/S
  • 基于组件的架构
  • 分层架构
  • 面向服务的架构 SOA

微服务, 是一种架构风格;

  • 是系统1对多服务
  • 每个服务独立部署
  • 每个服务高内聚(每一个服务只做一件事)
  • 服务间低耦合

优点

  • 服务独立,可以独立测试与部署
  • 服务水平扩展容易
  • 服务松耦合,不会因某个BUG,而导致整个系统宕机
  • 小团队开发, 不同团队分开开发, 迭代方便
  • RESTFUL接口, 语言无关。
  • 团队按微服务配置, 团队合作方便

缺点

  • 运维成本高
  • 接口需要兼容多个版本
  • 分布式系统的复杂性
  • 分布式事务

三、MVC、RPC、SOA微服务架构区别

MVC

idea 试错, 快速验证, 简单快速上线。
JAVA系列,常用STRUCT/SPRINGMVC/MYBATIS等

RPC

解体单上述的单体架构,抽取核心服务,独立关键技术。
Trift/Avro/Hessian/Protobuf/
Thrift开源跨语言接口。
Avro RPC接口

SOA


多了一个ESB中介服务。

微服务

上述出现了问题是, 服务太多,如何管理。ESB过度到了zk/eureka(注册中心)。

四、如设计服务,如何分解

拆分原则 AKF扩展立方体


Y轴(功能): 就是按功能,按业务拆分
X轴(水平扩展): 就是同一个服务运行多个实例, 做个集群加负载均衡
Z轴(数据分区): 基于类型的数据分区,如果用户所有区域。重庆,成都各一个集群。

前后端分离

就是把前后端的代码分离, 物理分离, 只用接口和模型。如前端可以用MVVM架构,和后端只是简单RESTFUL接口。

无状态服务

对于无状态服务, 首先说一下什么是状态, 如果一个数据需要被多个服务共享,才能完成一笔交易, 那么这个数据被称为状态, 进而依赖这个“状态”数据的服务被称为有状态服务, 反之称为无状态服务。
真实意思,就是把有状态业务改变成为状态无关的计算服务, 数据迁移到分布式缓存中存储, 让业务服务变成了一个无状态的计算节点。这样就可以做水平扩展了。动态添加与删除节点。不再需要考虑数据同步的问题了。

RESTFULL 无状态通信

  • HTTP,扩展能力强,可以扩展成HTTPS
  • 行业通用

Spring架构-01-微服务架构的更多相关文章

  1. Spring Cloud构建微服务架构(一)服务注册与发现

    Spring Cloud简介 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全局锁 ...

  2. 一文读懂 Spring Boot、微服务架构和大数据治理三者之间的故事

    微服务架构 微服务的诞生并非偶然,它是在互联网高速发展,技术日新月异的变化以及传统架构无法适应快速变化等多重因素的推动下诞生的产物.互联网时代的产品通常有两类特点:需求变化快和用户群体庞大,在这种情况 ...

  3. Spring Cloud构建微服务架构(二)服务消费者

    Netflix Ribbon is an Inter Process Communication (IPC) cloud library. Ribbon primarily provides clie ...

  4. Spring Cloud构建微服务架构:服务网关(路由配置)【Dalston版】

    转载:http://blog.didispace.com/spring-cloud-starter-dalston-6-2/ 原创  2017-08-26  翟永超  Spring Cloud 被围观 ...

  5. Cola Cloud 基于 Spring Boot, Spring Cloud 构建微服务架构企业级开发平台

    Cola Cloud 基于 Spring Boot, Spring Cloud 构建微服务架构企业级开发平台: https://gitee.com/leecho/cola-cloud

  6. Spring Cloud构建微服务架构(五)服务网关

    通过之前几篇Spring Cloud中几个核心组件的介绍,我们已经可以构建一个简略的(不够完善)微服务架构了.比如下图所示: 我们使用Spring Cloud Netflix中的Eureka实现了服务 ...

  7. Spring Cloud构建微服务架构 - 服务网关

    通过之前几篇Spring Cloud中几个核心组件的介绍,我们已经可以构建一个简略的(不够完善)微服务架构了.比如下图所示: alt 我们使用Spring Cloud Netflix中的Eureka实 ...

  8. Spring Cloud搭建微服务架构----文章汇总

    Spring Cloud搭建微服务架构----前言 原文地址:https://my.oschina.net/u/1000241/blog/882929 Spring Cloud搭建微服务架构----使 ...

  9. Spring Cloud构建微服务架构

    Dalston版本 由于Brixton和Camden版本的教程已经停止更新,所以笔者计划在2017年上半年完成Dalston版本的教程编写(原计划完成Camden版本教程,但由于写了两篇Dalston ...

  10. Spring Cloud构建微服务架构(三)消息总线

     注:此文不适合0基础学习者直接阅读,请先完整的将作者关于微服务的博文全部阅读一遍,如果还有疑问,可以再来阅读此文,地址:http://blog.csdn.net/sosfnima/article/d ...

随机推荐

  1. 使用formData上传文件,ajax上传

    项目是vue项目,直接贴部分代码了: html: <input type="file" name="fileTable" @change="ch ...

  2. java项目中登陆时记住密码

    1.在登陆的时候记住密码,不知自动登陆: 2.登陆页面,填写用户名,密码,点击记住密码,下次进入登陆页面的时候,填写同样的用户名,密码自动填充(在不一次会话的情况下也就是说在不关闭浏览器的情况下): ...

  3. 牛客网第一场E题 Removal

    链接:https://www.nowcoder.com/acm/contest/139/E 来源:牛客网 Bobo has a sequence of integers s1, s2, ..., sn ...

  4. Qt_Pro详解

    在QT中,有一个工具qmake可以生成一个makefile文件,它是由.pro文件生成而来的,.pro文件的写法如下: 1. 注释 从“#”开始,到这一行结束. 2.模板变量告诉qmake为这个应用程 ...

  5. The type java.lang.Object cannot be resolved

    有时候在Eclipse中打开或者导入项目时会出现标题字样的问题:The type java.lang.Object cannot be resolved. It is indirectly refer ...

  6. sigmoid belief network boltszmann machine

    because of explaining away, the hidden weights in sigmoid belief network is no longer independent

  7. Win10系列:VC++调用自定义组件1

    通过20.9.1小节中的代码和步骤编写了一个名为"FilePickerComponent"的WinRT组件,接下来将在上一小节所新建的项目基础上,继续介绍如何在不同的语言所编写的应 ...

  8. VSTO:使用C#开发Excel、Word【3】

    <Visual Studio Tools for Office: Using C# with Excel, Word, Outlook, and InfoPath >——By Eric C ...

  9. Spring框架的四大原则

    Spring框架本身有四大原则: 1).使用POJO进行轻量级和最小入侵式开发 2).通过以来注入和基于接口编程实现松耦合 3).通过AOP和默认习惯进行声明式编程 4).使用AOP和模板减少模式化代 ...

  10. DevExpress v18.1新版亮点——CodeRush for VS篇(一)

    用户界面套包DevExpress v18.1日前正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了CodeRush for Visual Studio v18.1 的新功能,快来下载试 ...