文档章节

【微服务】开启巨石应用到微服务的探索

艳沐石
 艳沐石
发布于 2018/08/21 19:23
字数 822
阅读 14
收藏 0

背景

在过去的一年时间里,我一直在从事一件事情,将现有的单体应用(巨石应用)向微服务改造。 接下来,将持续整理一些在微服务路上的学习与成长。

为什么要做微服务

单体应用,开发、部署简单,适合于小项目快速开发。但随着业务增长,也会暴露出一些问题:

  1. 代码错综复杂。代码相互依赖,经常出现修改一个bug,却影响了其他功能模块。
  2. 资源抢占,相互影响。整个系统运行在一个进程中,时常因为导出大量数据导致服务响应时间过长,严重影响用户体验。
  3. 性能优化困难,不便扩展。有的服务是IO密集型,有的服务是CPU密集型,在同一个项目的时候,只能购买更高配置的机器,成本过高。
  4. 系统升级效率慢。新功能开发和bug修复周期时间长,修改后,回归测试执行较长。
  5. 学习成本高。业务越来越多,新加入的同事不能快速上手。文件数量多,业务耦合度高。

而引入微服务后,将各个模块按照业务单元拆分后,将较好的避免以上问题。

  1. 微服务本身可以按照自己的计划进行维护升级,只需要保证接口和参数格式稳定,将不影响其他调用方。
  2. 对于qps较高的服务,可以通过扩展节点数量,提高服务吞吐量。
  3. 程序运行独立的环境中,避免资源抢占。

带来的问题

当我们享受微服务带来的幸福时候,也要明白这样架构,所带来的复杂性。

  1. 自动化运维(DevOps)。服务数量越来越多,系统配置,运行情况,上线操作将指数型增长。如果还依旧像单体应用的时候,人为处理,将变得非常吃力。
  2. 服务调用时候,超时机制。服务在网络中调用时候,如果遇到超时后,如何重试,如何避免数据重复提交等问题。
  3. 分布式事务。在单体应用中,我们可以通过spring的事务管理器很容易实现。但微服务后,如果使用跨数据库的分布式事务,将严重影响性能。如何根据业务解决数据异常带来问题?

总结

微服务探索中,痛并快乐着。

最后,给出两点建议:

  1. 微服务不建议一下拆分很细,增加系统维护成本。最后粗略拆分,不断迭代,拆分。
  2. 微服务拥有独立的数据库,不可共享。数据访问必须通过服务调用实现。虽然很痛苦,但是坚持下来很不错。

© 著作权归作者所有

共有 人打赏支持
艳沐石
粉丝 3
博文 44
码字总数 24301
作品 0
大兴
程序员
私信 提问
【微服务】之七:轻松搞定SpringCloud微服务-API权限控制

【微服务】之七:轻松搞定SpringCloud微服务-API权限控制 Harries Blog™2017-12-210 阅读 httpSpringAppcatbeanAPIhttps 【微服务】轻松搞定SpringCloud微服务 目录 本系列为连载 文章 ,阅...

Harries Blog™
2017/12/21
0
0
分布式系统的那些事儿(七) - 微服务架构体系

微服务的出现,标志了又一个新的里程碑,似乎你不知道微服务就代表你好像out了一样。微服务是业务服务化,将SOA更好的延续了下去。配合restful也能够更好的提供api接口。 简单来说就是微服务...

风间影月
2017/10/17
0
0
基于 nest.js 的微服务开源框架 - Notadd

Notadd 是一个开源的、基于 Nest.js 框架的微服务开发架构,您可以根据不同的业务需求使用适合的模块、插件来搭建一个微服务系统。Notadd 官方提供了抽象化的公共服务层,在服务层内,每一个...

左华栋
2017/05/15
0
3
码云 企业技术分享会.上海站【微服务专场】

2018年,开源中国社区成立十周年,码云平台五周岁。我们借由历年来源创会的成功经验,社区运营的成果以及码云五年积累的企业资源,决定打造一系列具有专题的企业级高端技术分享会。 5月27日我...

小鱼丁
2018/05/14
55
5
微服务时代下,巨头企业的技术探索与实践 —— 码云企业技术分享会「上海站」

2018 年,是开源中国社区深耕互联网的第十个年头,是源创会持续为各城市开发者带来技术交流的第七年,也是码云平台开始羽翼渐丰的第五年。 做企业技术的沟通桥梁 我们深知技术交流与分享的必...

举个栗子OSC
2018/05/31
116
0

没有更多内容

加载失败,请刷新页面

加载更多

Pages Manager——可本地管理Pages服务内容,一键生成漂亮的文档界面。

Pages Manager Git地址 可本地管理Pages服务内容,一键生成漂亮的文档界面。在线预览 简单、轻便,无需安装数据库。 框架:spring-boot 数据库:sqlite 原理 本地维护一组markdown文档 将mar...

tanghc
20分钟前
1
0
基础目标检测算法介绍:CNN、RCNN、Fast RCNN和Faster RCNN

每次丢了东西,我们都希望有一种方法能快速定位出失物。现在,目标检测算法或许能做到。目标检测的用途遍布多个行业,从安防监控,到智慧城市中的实时交通监测。简单来说,这些技术背后都是强...

AI女神
21分钟前
4
0
哪有什么互联网寒冬?只是你穿的少而已!

声明:本文由终端研发部原创发布,未经允许,不得转载 前言 最近一段时间,大家都在说一些大公司纷纷裁员, 优化公司内部的组织架构。面对如此的寒冬变化,很多人在迷茫,在焦虑,在担忧自己...

终端研发部
26分钟前
2
0
nginx: [error] open() "/var/run/nginx.pid" failed (2: No such file or directory)

Nginx 启动时报错:nginx: [error] open() "/var/run/nginx.pid" failed (2: No such file or directory) 原因:系统重启 /var/run/ 目录下文件会清空。 方法一: # sudo nginx -c /etc/ngi......

驛路梨花醉美
28分钟前
2
0
TiDB 源码阅读系列文章(二十四)TiDB Binlog 源码解析

作者:姚维 TiDB Binlog Overview 这篇文章不是讲 TiDB Binlog 组件的源码,而是讲 TiDB 在执行 DML/DDL 语句过程中,如何将 Binlog 数据 发送给 TiDB Binlog 集群的 Pump 组件。目前 TiDB 在...

TiDB
41分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部