浅谈微服务

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

理论:"软件研发中任何一项技术、方法、架构都不可能是银弹"---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个说得上话的人。------邓巴数

相关推荐
昙鱼8 分钟前
springboot创建web项目
java·前端·spring boot·后端·spring·maven
eternal__day8 分钟前
数据结构(哈希表(中)纯概念版)
java·数据结构·算法·哈希算法·推荐算法
天之涯上上12 分钟前
JAVA开发 在 Spring Boot 中集成 Swagger
java·开发语言·spring boot
2402_8575834913 分钟前
“协同过滤技术实战”:网上书城系统的设计与实现
java·开发语言·vue.js·科技·mfc
白宇横流学长14 分钟前
基于SpringBoot的停车场管理系统设计与实现【源码+文档+部署讲解】
java·spring boot·后端
APP 肖提莫17 分钟前
MyBatis-Plus分页拦截器,源码的重构(重构total总数的计算逻辑)
java·前端·算法
kirito学长-Java19 分钟前
springboot/ssm太原学院商铺管理系统Java代码编写web在线购物商城
java·spring boot·后端
爱学习的白杨树20 分钟前
MyBatis的一级、二级缓存
java·开发语言·spring
Code成立30 分钟前
《Java核心技术I》Swing的网格包布局
java·开发语言·swing
运维&陈同学35 分钟前
【Beats01】企业级日志分析系统ELK之Metricbeat与Heartbeat 监控
运维·elk·elasticsearch·云原生·kibana·heartbeat·metricbeat