1.整体框架示意图
2.基本框架
3.一些学习过程中的疑问?
1.前后端分离是什么?
2.rpc是什么?和api有什么区别?
rpc用于后端调用后端的某个服务,是后端之间的调用,可以不严谨的理解为后端分离。api接口一般用于前端和后端之间的调用。前端向后端请求的时候,为了解决高并发需要进行负载均衡,后端的rpc调用需要用到etcd(当起了多个服务的时候),也就是所谓用etcd做服务发现。
3.常见的rpc框架有哪些?
-
Dubbo:国内最早开源的 RPC 框架,由阿里巴巴公司开发并于 2011 年末对外开源,仅支持 Java 语言。
-
Motan:微博内部使用的 RPC 框架,于 2016 年对外开源,仅支持 Java 语言。
-
Tars:腾讯内部使用的 RPC 框架,于 2017 年对外开源,仅支持 C++ 语言。
-
Spring Cloud:国外 Pivotal 公司 2014 年对外开源的 RPC 框架,仅支持 Java 语言
4.服务发现是什么?
当后端启动了多个服务,把这些服务全部都注册到etcd上,此时,如果通过rpc进行远程调用的时候,先去etcd上找当前有哪些服务可用,通过轮训或者随机选取的方法选出可以供调用的服务来响应rpc调用,etcd被称为服务发现中间件,最为对比理解的,kafka是消息队列中间件。
5.总结
- 前后端分离的设计架构
- 前端通过API接口对后端进行调用
- 后端之间通过rpc进行调用,起多个服务或者微服务架构时,需要用到服务发现中间件,如etcd,如果是一对一就是纯rpc调用
- 前端请求时候需要进行负载均衡
- kafka等消息队列中间件主要进行异步和削峰
- 每个后端的服务可以独立打包成一个微服务的结构部署到一个独立的docker
- k8s对docker进行编排
- 部署时将每个服务打包成docker镜像,主要是写好docker file