1. 微服务架构的优点

  1. 庞大的单体程序 -> 一套微型程序。 每一个服务有明确的边界(服务之间的消息通讯机制) ,每一个服务都能单独的开发和维护,并且更好理解
  2. 每一个服务都能由一个团队来开发,当然开发者对技术的选型可以自由选择,即使某一个服务的技术过时或者有缺陷,都可以在很小的成本下进行技术升级,减少系统改造的成本
  3. 每一个服务独立部署,功能开发完成之后可以直接进行部署。
  4. 每一个服务可以根据当前服务的性质,选择适合的硬件进行部署,比如 对于计算能力强的 但是存储要求不高的模块,可以部署在cpu能力强但是硬件存储少的服务器,对于需要做存储而不需要太多运算的情况,可能选择对应的硬件模式

2.微服务架构的缺点

  1. 多个服务的产生也会使系统的架构变得复杂,每个服务之间必须实现服务间的通讯协议
  2. 对于服务间请求慢,或者请求失败的情况,各个服务需要实现对应的错误处理
  3. 分区数据库架构,服务之间的事物处理,不同服务可能采用的不同的数据库,并且有些nosql数据库根本不支持事物,所以开发人员不得不采用最终一致性来保证数据
  4. 服务代码的测试,一个服务的测试需要启动跟该服务关联的所以服务,依赖的服务越多,服务的测试就越困难
  5. 服务的变更,服务之间的依赖导致某一个被依赖的服务如果重启的话,我们所测试的服务也必须重启,并且服务之间的依赖顺序也限制了我们服务的启动顺序
  6. 服务器的布置,随着服务的增加,服务器的数量呈倍数增长。
  7. 需要实现服务的发现机制,使得服务能发现需要与之通讯的其他任何服务的位置

  TIP: CAP定理

  一个分布式系统最多满足,一致性,可用性,分区容错性 三项中的两项   (是指在一个服务中)

  • 一致性:是指更新操作成功并返回客户端后,所有节点在同一时刻数据是一致的     (最终结果是一致的)
  • 可用性:服务一直可用,并且是正常响应时间 (正常响应的时间间隙,也就是部署的多个同一服务之间的数据库数据在数据同步的这段时间 数据库中的数据可能是不一致的)
  • 分区容错性:是指在分布式服务某一个节点故障之后,某个节点仍能对外提供满足 一致性,可用性的服务

  那么如何取舍:

  1. 在大型网络应用,一般选择AP 舍弃 C  但是会用最终一致性来弥补 C
  2. 在关于钱财方面(银行案例)  C是底线  保证CP 舍弃A,  系统可以通过阻止数据的插入来确保CP

3.微服务如何应对高并发

  • 垂直扩展
    1. 增加硬件设备
    2. 使用缓存替代IO,使用异步来替代同步  等

      不管怎么说,对于单体硬件的扩展始终是有极限的,所以垂直扩展的方式并不适用于大型的互联网项目

  • 水平扩展  
    1. 增加服务器数量,以请求分发的模式减少服务的压力

  TIPS: 数据库分库分表分区    可以根据字段的 某一个位置选择使用 水平扩展出来的某一个库  某一个字段与库1-1对应,再选择一个字段与库中的某一个表 1-1对应 ,再选择一个字段与 表中的分区 1-1对应

微服务架构 ------ Day01 微服务架构优缺点的更多相关文章

  1. SpringCloud学习笔记(二):微服务概述、微服务和微服务架构、微服务优缺点、微服务技术栈有哪些、SpringCloud是什么

    从技术维度理解: 微服务化的核心就是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底 地去耦合,每一个微服务提供单个业务功能的服务,一个服务做一件事, 从技术角度看就是一种小而独立的处理过程,类 ...

  2. (1)java Spring Cloud+Spring boot+mybatis企业快速开发架构之微服务是什么?它的优缺点有哪些?

    ​ "微服务"一词来源于 Martin Fowler 的<Microservices>一文.微服务是一种架构风格,即将单体应用划分为小型的服务单元,微服务之间使用 HT ...

  3. 【CHRIS RICHARDSON 微服务系列】微服务架构中的进程间通信-3

    编者的话 |本文来自 Nginx 官方博客,是微服务系列文章的第三篇,在第一篇文章中介绍了微服务架构模式,与单体模式进行了比较,并且讨论了使用微服务架构的优缺点.第二篇描述了采用微服务架构的应用客户端 ...

  4. 软件架构的演进,了解单体架构,垂直架构,SOA架构和微服务架构的变化历程

    软件架构演进 软件架构的发展经历了从单体结构.垂直架构.SOA架构到微服务架构的过程,博客里写到了这四种架它们的特点以及优缺点分析,个人学习之用,仅供参考! 1.1.1      单体架构 特点: 1 ...

  5. Chris Richardson微服务翻译:微服务架构中的服务发现

    Chris Richardson 微服务系列翻译全7篇链接: 微服务介绍 构建微服务之使用API网关 构建微服务之微服务架构的进程通讯 微服务架构中的服务发现(本文) 微服务之事件驱动的数据管理 微服 ...

  6. 开源微信管家平台——JeeWx 捷微4.0 微服务版本发布,全新架构,全新UI,提供强大的图文编辑器

    JeeWx捷微4.0   微服务版本发布^_^ 换代产品(全新架构,全新UI,提供强大的图文编辑器) JEEWX 从4.0版本开始,技术架构全新换代,采用微服务架构,插件式开发,每个业务模块都是独立的 ...

  7. [转]系统架构演变--集中式架构-垂直拆分-分布式服务-SOA(服务治理)-微服务

    一.系统架构演变 1.1. 集中式架构 当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本.此时,用于简化增删改查工作量的数据访问框架(ORM)是影响项目开发的关键. 存在的 ...

  8. 【转】「Chris Richardson 微服务系列」微服务架构的优势与不足

    Posted on 2016年5月4日 编者的话|本文来自 Nginx 官方博客,是微服务系列文章的第一篇,主要探讨了传统的单体式应用的不足,以及微服务架构的优势与挑战. 作者介绍:Chris Ric ...

  9. Java生鲜电商平台-SpringCloud微服务开发中的数据架构设计实战精讲

    Java生鲜电商平台-SpringCloud微服务开发中的数据架构设计实战精讲 Java生鲜电商平台:   微服务是当前非常流行的技术框架,通过服务的小型化.原子化以及分布式架构的弹性伸缩和高可用性, ...

随机推荐

  1. Salesforce学习之路-developer篇(二)利用Jenkins和Bitbucket实现Salesforce的CI/CD功能

    上文提到,基于CRM的二次开发是必不可少的,但是在实际项目中CI/CD是不可忽略的一个重要部分,与传统的Java,Python项目不同,如果对Salesforce进行持续集成和持续部署呢? 结合找到的 ...

  2. Cocos Creator 中 _worldMatrix 到底是什么(上)

    Cocos Creator 中 _worldMatrix 到底是什么(上) 1. (矩阵)Matrix是什么,有什么用 (矩阵)Matrix一个神奇的存在?在开发过程中对里边各项值的含义是不是抓耳挠腮 ...

  3. 蓝桥杯 algo122 未名湖的烦恼 简单题

    #include <iostream> using namespace std; int m, n, ans; void solve(int m, int n, int cnt) { &a ...

  4. sublime_REPL使用及安装教程(解决Sublime无交互问题)

    谈到python编程工具能想到那些? pycharm?IDLE? Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等,还可自定义键绑定,菜单和工具栏. ...

  5. FileDetail

    import org.apache.hadoop.conf.*; import org.apache.hadoop.fs.*; import java.io.IOException; import j ...

  6. 数据分析--pandas的基本使用

    一.pandas概述 1.pandas是一个强大的Python数据分析的工具包,是基于NumPy构建的. 2.pandas的主要功能 具备对其功能的数据结构DataFrame.Series 集成时间序 ...

  7. Spring boot 梳理 - SpringBoot中注入ApplicationContext对象的三种方式

    直接注入(Autowired) @Configuration public class OAConfig { @Autowired private ApplicationContext applica ...

  8. ol/ul/dl的区别

    一.无序列表-ul(unorder list)  1.语法                     <ul></ul>->Unorder List             ...

  9. ps 将图片四角变成圆角

    1.用PS打开一张图片,用矩形选框工具,选出你要保留的的那一部分,“选择→修改→平滑”.在弹出的选框里添入数值,值越大角就越圆. 2.选择“选择→反选”,再按delete删除就ok了.

  10. jQuery常用方法(二)-事件

    ready(fn); $(document).ready()注意在body中没有onload事件,否则该函数不能执行.在每个页面中可以 有很多个函数被加载执行,按照fn的顺序来执行. bind( ty ...