博客
关于我
微服务架构的优点和挑战
阅读量:184 次
发布时间:2019-02-28

本文共 851 字,大约阅读时间需要 2 分钟。

一 微服务的优点
1 易于开发和维护:一个微服务只会关注一个特定的业务功能,所以它业务清晰、代码量少。开发和维护单个微服务相当简单。而整个应用是若干个微服务构建而成的,所以整个应用也被维持在一个可控状态。
2单个微服务启动较快:单个微服务代码量较少,所以启动会比较快。
3 局部修改容易部署:单个应用只要有修改,就得重新部署整个应用,微服务解决了这样的问题。一般来说,对某个微服务进行修改,只需要重新部署这个服务即可。
4 技术栈不受限:在微服务架构中,可以结合项目业务及团队的特点,合理选择技术栈。例如某些服务可以使用关系型数据库Mysql;某些微服务有图形计算需求,可以使用Neo4j;甚至可根据需求,部分微服务使用Java开发,部分微服务使用Node.js开发。
5 按需收缩:可根据需求,实现细粒度的扩展。例如,系统中的某个微服务遇到了瓶颈,可以结合这个微服务的业务特点,增加内存、升级CPU或者增加节点。
综上,单体应用架构的缺点,恰恰是微服务的优点,而这些优点使得微服务看起来简直非常完美。然而完美的东西并不存在,就像银弹不存在一样。微服务存在一些挑战。
二 微服务架构面临的挑战
1 运维要求较高:更多的服务意味着更多的运维投入。在单体架构中,只需要保证一个应用的正常运行。而在微服务中,需要保证几十甚至几百个服务正常运行与协作,这给运维带来了很大的挑战。
2 分布式固有的复杂性:使用微服务构建的是分布是系统。对于一个分布式系统,系统容错、网络延迟、分布式事务等都会带来巨大的挑战。
3 接口调整成本高:微服务之间通过接口进行通信。如果修改某一个微服务API,可能所有使用该接口的微服务都需要调整。
4 重复劳动:很多服务可能都会使用相同的功能,而这个功能并没有达到分解为一个微服务的程度,这个时候,可能各个服务都会开放这一功能,从而导致代码重复。尽管可以使用共享库来解决这个问题(例如可以将这个功能封装成公共组件,需要该功能的微服务引用该组件),但共享库在多语言环境下就不一定行得通。

转载地址:http://dwrj.baihongyu.com/

你可能感兴趣的文章
Nginx配置实例-反向代理实例:根据访问的路径跳转到不同端口的服务中
查看>>
Nginx配置实例-反向代理实现浏览器请求Nginx跳转到服务器某页面
查看>>
Nginx配置实例-负载均衡实例:平均访问多台服务器
查看>>
Nginx配置文件nginx.conf中文详解(总结)
查看>>
Nginx配置自带的stub状态实现活动监控指标
查看>>
nginx配置详解、端口重定向和504
查看>>
Nginx配置负载均衡到后台网关集群
查看>>
Nginx配置限流,技能拉满!
查看>>
Nginx配置静态代理/静态资源映射时root与alias的区别,带前缀映射用alias
查看>>
Nginx面试三连问:Nginx如何工作?负载均衡策略有哪些?如何限流?
查看>>
Nginx:NginxConfig可视化配置工具安装
查看>>
ngModelController
查看>>
ngrok | 内网穿透,支持 HTTPS、国内访问、静态域名
查看>>
ngrok内网穿透可以实现资源共享吗?快解析更加简洁
查看>>
NHibernate学习[1]
查看>>
NHibernate异常:No persister for的解决办法
查看>>
NIFI1.21.0_java.net.SocketException:_Too many open files 打开的文件太多_实际操作---大数据之Nifi工作笔记0051
查看>>
NIFI1.21.0_Mysql到Mysql增量CDC同步中_日期类型_以及null数据同步处理补充---大数据之Nifi工作笔记0057
查看>>
NIFI1.21.0_Mysql到Mysql增量CDC同步中_补充_更新时如果目标表中不存在记录就改为插入数据_Postgresql_Hbase也适用---大数据之Nifi工作笔记0059
查看>>
NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
查看>>