浅谈微服务

技术方法论:向微服务迈进:

理论:"软件研发中任何一项技术、方法、架构都不可能是银弹"---Fred Brooks

哪些场景适合用微服务,呢些不适用?(微服务存在哪些理解误区、应用前提) 一些被验证过、被总结为经验的最佳实践有哪些?

目的:微服务的驱动力

微服务的目的:The goal of microservices is to sufficiently decompose the application in order to facilitate agile application development and deployment.

微服务的目的就是有效的拆分应用,以实现敏捷开发和部署。

为什么需要微服务?

凡事应先有目的,有预期收益再谈行动才合理。

有人说迈向微服务的目的是为了追求更先进的架构形式?这句话没什么含量,任何一次架构演进都是为了更加先进而没有为了倒退的。

有人说微服务是信息发展的必然阶段,为了应对日益庞大的压力,获得更好的性能。这个观点看似合理具体,准确,实则不然。笔者个人态度是反对以获得更好性能为主要目的的,这可以是辅助功能,现在单体通过采用可扩缩设计,同样能够集群部署,更重要的是云计算数据中心算力可以认为是无限的,且能通过扩展硬件的手段解决问题就别用复杂的软件方法(原因在于银弹中说过:硬件的成本能持续下降而软开不行),而且性能也不会因为采用了微服务架构就凭空产生。把系统拆分为微服务,一旦在某个关键地方卡住了业务流程,其整体的结果往往还不如单体。没有清晰的职责划分,导致扩展性失效,多加机器往往还不如单机。

所以 软件系统选择微服务架构,通常比较常见的、合理的驱动力来自组织内部、外部两方面,先列举一些外部因素:当意识到没有什么技术可以包打天下;当个人能力成为明显的制约;内部因素:变化特别快的创!

新业务系统往往会自主选择微服务,因为频繁的更迭会让开发者疲惫不堪;

总之,选择微服务一定是经过权衡利弊的。微服务最主要的目的是对系统进行有效的拆分,实现物理层面的隔离。微服务的核心价值就是拆分之后的系统能让局部单个服务有可能实现敏捷的卸载、部署、开发、升级。局部的持续更迭,是系统具备 Phoenix 特性的必要条件。

前提:微服务需要的条件

第一个先决条件就是决策者必须坚定不移的使用微服务,沟通决定设计;

第二个前提条件就是组织中具备一些对微服务有充分理解、有一定实践经验的技术专家。虽然微服务对于开发者来说是友善的,但对于架构者确要求很高,

我敢断言你的社交是不超过5个知己好友,15个可信任的伙伴,35个普通朋友,150个说得上话的人。------邓巴数

相关推荐
一知半解仙1 分钟前
从0到1!Spring Cloud微服务无缝集成AI智能体:架构设计+核心源码+生产落地全指南
人工智能·spring cloud·微服务
lemon_sjdk4 分钟前
从 ServletRequest 到 Spring 抽象:Web 请求的底层基石与演化
java·前端·spring
云泽8084 分钟前
Linux基础开发工具(三):Vim高级配置、Swap恢复机制与Sudo权限白名单详解
linux·运维·vim
Urbano9 分钟前
服装厂入局自动化开袋设备:市场前景、机型选型与落地实效科普
运维·自动化
tju233312 分钟前
Gitee Test是什么:从测试资产管理到自动化执行的工程化实践
运维·gitee·自动化
名字还没想好☜19 分钟前
Kubernetes Pod 调度实战:nodeSelector、亲和性与 taint/toleration 把 Pod 放到指定节点
运维·云原生·容器·kubernetes·调度
唐青枫20 分钟前
Java Reactor Netty 实战详解:从响应式 HTTP 到 TCP 长连接
java·netty
qetfw23 分钟前
CentOS 7 vsftpd.conf 配置文件详解:监听、用户、权限、被动模式与 TLS
linux·运维·centos·ftp·vsftpd
豆瓣鸡27 分钟前
微服务项目生产环境全链路架构:从前端访问到网关鉴权、服务调用、中间件与网络安全
微服务·架构
风曦Kisaki31 分钟前
Kubernetes(K8s)笔记Day04:控制器(ReplicaSet 与Deployment),滚动更新及回滚,滚动更新策略,Pod 的 DNS 策略
linux·运维·笔记·docker·容器·kubernetes