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. 2018年蓝桥杯java b组第七题

    标题:螺旋折线 如图p1.pgn所示的螺旋折线经过平面上所有整点恰好一次. 对于整点(X, Y),我们定义它到原点的距离dis(X, Y)是从原点到(X, Y)的螺旋折线段的长度. 例如dis(0, ...

  2. selenium-01-简介

    一.Selenium是什么? Selenium是ThroughtWorks公司一个强大的开源Web功能测试工具系列,本系列现在主要包括以下4款: 1.Selenium Core:支持DHTML的测试案 ...

  3. 通过python代码对域名ssl证书进行监控

    根据公司要求,要求用zabbix对域名的ssl证书进行到期监控 直接上代码 #!/usr/bin/env python3 from urllib3.contrib import pyopenssl f ...

  4. SUSE CaaS Platform 4 - 使用 Ceph RBD 作为持久存储 (静态)

    1.所有节点安装 # zypper -n in ceph-common 复制 ceph.conf 到 worker 节点上 # scp admin:/etc/ceph/ceph.conf /etc/c ...

  5. LeetCode正则表达式匹配

    题目描述 给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配. '.' 匹配任意单个字符 '*' 匹配零个或多个前面的那一个元素 所谓匹配,是要涵盖 整个 ...

  6. 【Elasticsearch 搜索之路】(一)什么是 Elasticsearch?

    本篇文章对 Elasticsearch 做了基本介绍,在后续将通过专栏的方式持续更新,本系列以 Elasticsearch7 作为主要的讲解版本,欢迎各位大佬指正,共同学习进步! 一般涉及大型数据库的 ...

  7. Linux被中断的系统调用

    慢系统调用,指的是可能永远无法返回,从而使进程永远阻塞的系统调用,比如无客户连接时的accept.无输入时的read都属于慢速系统调用. 在Linux中,当阻塞于某个慢系统调用的进程捕获一个信号,则该 ...

  8. 【Java】访问mysql数据库视图

    数据库连接Connect: package cn.hkwl.zaxq.mysql; import java.sql.Connection; import java.sql.DriverManager; ...

  9. Zabbix监控方案-官方最新4.4版本

    Zabbix 2019/10/12 Chenxin 参考 https://www.zabbix.com/documentation/4.0/zh/manual https://baike.baidu. ...

  10. 创建一个 Laravel 项目

    创建一个 Laravel 项目,首先需要安装 Composer ,如果没有安装的参考 https://docs.phpcomposer.com/00-intro.html 一.安装 Laravel 安 ...