微服务架构 ------ Day01 微服务架构优缺点
1. 微服务架构的优点
- 庞大的单体程序 -> 一套微型程序。 每一个服务有明确的边界(服务之间的消息通讯机制) ,每一个服务都能单独的开发和维护,并且更好理解
- 每一个服务都能由一个团队来开发,当然开发者对技术的选型可以自由选择,即使某一个服务的技术过时或者有缺陷,都可以在很小的成本下进行技术升级,减少系统改造的成本
- 每一个服务独立部署,功能开发完成之后可以直接进行部署。
- 每一个服务可以根据当前服务的性质,选择适合的硬件进行部署,比如 对于计算能力强的 但是存储要求不高的模块,可以部署在cpu能力强但是硬件存储少的服务器,对于需要做存储而不需要太多运算的情况,可能选择对应的硬件模式
2.微服务架构的缺点
- 多个服务的产生也会使系统的架构变得复杂,每个服务之间必须实现服务间的通讯协议
- 对于服务间请求慢,或者请求失败的情况,各个服务需要实现对应的错误处理
- 分区数据库架构,服务之间的事物处理,不同服务可能采用的不同的数据库,并且有些nosql数据库根本不支持事物,所以开发人员不得不采用最终一致性来保证数据
- 服务代码的测试,一个服务的测试需要启动跟该服务关联的所以服务,依赖的服务越多,服务的测试就越困难
- 服务的变更,服务之间的依赖导致某一个被依赖的服务如果重启的话,我们所测试的服务也必须重启,并且服务之间的依赖顺序也限制了我们服务的启动顺序
- 服务器的布置,随着服务的增加,服务器的数量呈倍数增长。
- 需要实现服务的发现机制,使得服务能发现需要与之通讯的其他任何服务的位置
TIP: CAP定理
一个分布式系统最多满足,一致性,可用性,分区容错性 三项中的两项 (是指在一个服务中)
- 一致性:是指更新操作成功并返回客户端后,所有节点在同一时刻数据是一致的 (最终结果是一致的)
- 可用性:服务一直可用,并且是正常响应时间 (正常响应的时间间隙,也就是部署的多个同一服务之间的数据库数据在数据同步的这段时间 数据库中的数据可能是不一致的)
- 分区容错性:是指在分布式服务某一个节点故障之后,某个节点仍能对外提供满足 一致性,可用性的服务
那么如何取舍:
- 在大型网络应用,一般选择AP 舍弃 C 但是会用最终一致性来弥补 C
- 在关于钱财方面(银行案例) C是底线 保证CP 舍弃A, 系统可以通过阻止数据的插入来确保CP
3.微服务如何应对高并发
- 垂直扩展
- 增加硬件设备
- 使用缓存替代IO,使用异步来替代同步 等
不管怎么说,对于单体硬件的扩展始终是有极限的,所以垂直扩展的方式并不适用于大型的互联网项目
- 水平扩展
- 增加服务器数量,以请求分发的模式减少服务的压力
TIPS: 数据库分库分表分区 可以根据字段的 某一个位置选择使用 水平扩展出来的某一个库 某一个字段与库1-1对应,再选择一个字段与库中的某一个表 1-1对应 ,再选择一个字段与 表中的分区 1-1对应
微服务架构 ------ Day01 微服务架构优缺点的更多相关文章
- SpringCloud学习笔记(二):微服务概述、微服务和微服务架构、微服务优缺点、微服务技术栈有哪些、SpringCloud是什么
从技术维度理解: 微服务化的核心就是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底 地去耦合,每一个微服务提供单个业务功能的服务,一个服务做一件事, 从技术角度看就是一种小而独立的处理过程,类 ...
- (1)java Spring Cloud+Spring boot+mybatis企业快速开发架构之微服务是什么?它的优缺点有哪些?
"微服务"一词来源于 Martin Fowler 的<Microservices>一文.微服务是一种架构风格,即将单体应用划分为小型的服务单元,微服务之间使用 HT ...
- 【CHRIS RICHARDSON 微服务系列】微服务架构中的进程间通信-3
编者的话 |本文来自 Nginx 官方博客,是微服务系列文章的第三篇,在第一篇文章中介绍了微服务架构模式,与单体模式进行了比较,并且讨论了使用微服务架构的优缺点.第二篇描述了采用微服务架构的应用客户端 ...
- 软件架构的演进,了解单体架构,垂直架构,SOA架构和微服务架构的变化历程
软件架构演进 软件架构的发展经历了从单体结构.垂直架构.SOA架构到微服务架构的过程,博客里写到了这四种架它们的特点以及优缺点分析,个人学习之用,仅供参考! 1.1.1 单体架构 特点: 1 ...
- Chris Richardson微服务翻译:微服务架构中的服务发现
Chris Richardson 微服务系列翻译全7篇链接: 微服务介绍 构建微服务之使用API网关 构建微服务之微服务架构的进程通讯 微服务架构中的服务发现(本文) 微服务之事件驱动的数据管理 微服 ...
- 开源微信管家平台——JeeWx 捷微4.0 微服务版本发布,全新架构,全新UI,提供强大的图文编辑器
JeeWx捷微4.0 微服务版本发布^_^ 换代产品(全新架构,全新UI,提供强大的图文编辑器) JEEWX 从4.0版本开始,技术架构全新换代,采用微服务架构,插件式开发,每个业务模块都是独立的 ...
- [转]系统架构演变--集中式架构-垂直拆分-分布式服务-SOA(服务治理)-微服务
一.系统架构演变 1.1. 集中式架构 当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本.此时,用于简化增删改查工作量的数据访问框架(ORM)是影响项目开发的关键. 存在的 ...
- 【转】「Chris Richardson 微服务系列」微服务架构的优势与不足
Posted on 2016年5月4日 编者的话|本文来自 Nginx 官方博客,是微服务系列文章的第一篇,主要探讨了传统的单体式应用的不足,以及微服务架构的优势与挑战. 作者介绍:Chris Ric ...
- Java生鲜电商平台-SpringCloud微服务开发中的数据架构设计实战精讲
Java生鲜电商平台-SpringCloud微服务开发中的数据架构设计实战精讲 Java生鲜电商平台: 微服务是当前非常流行的技术框架,通过服务的小型化.原子化以及分布式架构的弹性伸缩和高可用性, ...
随机推荐
- (七十二)c#Winform自定义控件-雷达图
前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kwwwvagaa/NetWinformControl 码云:ht ...
- python 课后习题 猜数游戏
4.1 猜数游戏.在程序中预设一个0~9之间的整数,让用户通过键盘输入所猜数字,如果大于预设的数,显示“遗憾,太大了”:如果小于预设的数,显示“遗憾,太小了”:如此循环,直至猜到该数,显示“预测N次, ...
- Weblogic任意文件上传漏洞(CVE-2018-2894)复现
使用docker搭建漏洞测试环境 micr067@test:~/vulhub/weblogic/CVE-2018-2894$ sudo docker-compose build weblogic us ...
- Scrapy项目 - 实现斗鱼直播网站信息爬取的爬虫设计
要求编写的程序可爬取斗鱼直播网站上的直播信息,如:房间数,直播类别和人气等.熟悉掌握基本的网页和url分析,同时能灵活使用Xmind工具对Python爬虫程序(网络爬虫)流程图进行分析. 一.项目 ...
- Mysql的MyISAM和InnoDB存储引擎的区别
从以下几个方面: 1.存储结构 每个MyISAM在磁盘上存储成三个文件.第一个文件的名字以表的名字开始,扩展名指出文件类型. .frm文件存储表定义. 数据文件的扩展名为.MYD (MYData). ...
- 节点操作--JavaScript
1 - 概念 网页中的所有内容都是节点(标签.属性.文本.注释),在DOM中,节点使用node来表示. HTML DOM树中的所有节点均可通过JS进行访问,所有HTML元素(节点)均可被修改,也可以创 ...
- vimrc配置文件
目录 vimrc配置文件 参考 主要功能 使用方法 配置文件 文件下载 vimrc配置文件
- 阿里云虚拟主机安装wordpress,提示连接数据库失败的解决方法
很多新手在购买的虚拟主机后就开始尝试安装,却发现连接数据库老是出错,不知道什么问题,反复检查了自己填写的数据库连接信息发现也没有问题,这个时候我们似乎就没法了. 但这个其实是后台空间的设置问题,你 ...
- 基于 H5 WebGL 的 3D 室内定位及电子围栏
前言 现代工业化的推进在极大加速现代化进程的同时也带来的相应的安全隐患,在传统的可视化监控领域,一般都是基于 Web SCADA 的前端技术来实现 2D 可视化监控,本系统采用 Hightopo 的 ...
- 【CV现状-3.3】特征提取与描述
#磨染的初心--计算机视觉的现状 [这一系列文章是关于计算机视觉的反思,希望能引起一些人的共鸣.可以随意传播,随意喷.所涉及的内容过多,将按如下内容划分章节.已经完成的会逐渐加上链接.] 缘起 三维感 ...