浅谈微服务

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

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

相关推荐
Yaml42 小时前
Spring Boot 与 Vue 共筑二手书籍交易卓越平台
java·spring boot·后端·mysql·spring·vue·二手书籍
小小小妮子~2 小时前
Spring Boot详解:从入门到精通
java·spring boot·后端
hong1616882 小时前
Spring Boot中实现多数据源连接和切换的方案
java·spring boot·后端
一坨阿亮2 小时前
Linux 使用中的问题
linux·运维
aloha_7892 小时前
从零记录搭建一个干净的mybatis环境
java·笔记·spring·spring cloud·maven·mybatis·springboot
记录成长java3 小时前
ServletContext,Cookie,HttpSession的使用
java·开发语言·servlet
睡觉谁叫~~~3 小时前
一文解秘Rust如何与Java互操作
java·开发语言·后端·rust
程序媛小果3 小时前
基于java+SpringBoot+Vue的旅游管理系统设计与实现
java·vue.js·spring boot
小屁孩大帅-杨一凡4 小时前
java后端请求想接收多个对象入参的数据
java·开发语言
java1234_小锋4 小时前
使用 RabbitMQ 有什么好处?
java·开发语言