Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

会涉及到分布式事务吗~ #3

Open
bcpj opened this issue Jun 6, 2020 · 1 comment
Open

会涉及到分布式事务吗~ #3

bcpj opened this issue Jun 6, 2020 · 1 comment

Comments

@bcpj
Copy link

bcpj commented Jun 6, 2020

springcloud这一套把系统拆分成零散的微服务,我很疑惑这是不是人为的降低性能?springcloud服务间通过http调用,这和我们使用第三方api接口(比如第三方查物流接口什么的...)有区别吗?我一直任务http是很慢很慢的东西,还有微服务之后带来的分布式事务问题,十分麻烦........ 单体项目+集群部署是不是性能最高的做法呢? 初入微服务的坑,想通过你的项目来深刻了解一下。。。

@Zealon159
Copy link
Owner

Zealon159 commented Jun 8, 2020

目前还没涉及分布式事务,其他问题我说下我的个人见解哈。

1.SpringCloud这一套把系统拆分成零散的微服务,我很疑惑这是不是人为的降低性能?
首先要正确理解微服务,微服务是一种用于构建应用的架构方案。微服务架构有别于更为传统的单体式方案,可将应用拆分成多个核心功能。每个功能都被称为一项服务,可以单独构建和部署,这意味着各项服务在工作(和出现故障)时不会相互影响。

而SpringCloud 是一套完整的微服务落地解决方案,给开发人员提供了快速构建分布式系统中一些常见模式的工具和组件(如配置管理,服务发现,断路器,智能路由,服务网关等),通过这一整套可以为我们快速的构建一套分布式程序,所以不是人为的降低性能,而是一套分布式架构解决方案。

2.SpringCloud服务间通过http调用,这和我们使用第三方api接口(比如第三方查物流接口什么的...)有区别吗?
单存从Http协议来看的话,是没有区别的,我们通过Http调用第三方API主要慢的原因是服务器之间不在一个局域网内导致的,这点很重要。另外SpringCloud整合了Feign客户端,服务与服务之间的通信采用Http长连接,在TCP层不用每次都握手和挥手,所以还是很快的。而且http是最通用的协议,可以很好地解决跨语言跨平台兼容性。

3.SpringCloud 微服务 与单体项目+集群的主要区别,单体项目+集群部署是不是性能最高的做法呢?
要是理解了问题1的微服务定义,这个问题自然应该就会明白了,单体项目+集群,是对整个应用提供了高可用,而微服务的粒度更细,可以针对某个服务提供高可用。打个比方,阅读APP中的图书阅读接口请求量最大,那么就可以单独给这个服务分配更多的节点,而关于我们这种访问量很少的接口,我们就只分配1个节点就可以支撑了。如果使用集群模式,会浪费更多的机器资源,而且扩容也很麻烦。

微服务更NB的是,通过注册中心可以自动的扩容或缩容某个服务,通过业务算法随着QPS请求量的增加或减少(想想淘宝、京东,如果不采用分布式扩容技术手段在618、双11的时候是不是一种灾难 ),云服务可以动态扩容或缩容这点我觉得就是微服务的精髓之一了。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants