微服务是一种软件架构风格,它是以专注于单一责任与功能的小型功能区块 为基础,利用模组化的方式组合出复杂的大型应用程序,各功能区块使用与语言无关 的 API 集相互通讯。
RPC是有基于HTTP的实现的(RPC OVER HTTP),你这里说的“云函数只支持事件或者http请求,没有rpc通信”,或许描述的不太清晰,具体可以根据你的业务来解决,比如 XMLRPC就是使用HTTP协议进行通讯的。
注意:如果开启了feign的hystrix配置,那么会因为使用了hystrix的异步线程池,而使得自定义标签(tag)路由及全链路灰度失效。原因是tag是打在ThreadLocal中的,如果切换线程会丢失tag,如使用ExecutorService多线程调用下游服务也会。丢失tag的现象是,调用顺序A->B->C时,调用链中只能看到A服务相关的tag信息,看不到B的相关信息。(不加TRANSITIVE参数,默认tag可以传递给B,加了TRANSITIVE参数tag可以传递给C)
如果服务触发限流,会返回429的httpcode,代表请求太多。设置10s/1次,很容易触发。同时全局限流只能是一个,基于系统和自定义标签限流可以有多个。限流配置在被调用方,会把限流规则下发给provider。
Consumer调用gateway调用provider,此时provider的上游服务不是consumer,而是gateway。所以服务路由、服务鉴权、服务熔断,都是按照这个逻辑去配置。
虽然分开两个部署组,但如果spring.application.name的服务名相同,会认为是同一个服务,并且归在同一个服务治理下。可以通过服务治理-服务实例列表查看服务下的所有实例。
服务默认开启的端口是application.yml中配置的端口,可以在服务治理-服务实例列表中看到开启的端口。
注意:这里的端口如果需要通过公网IP访问,需要在安全组的入站规则中放开。
Provider要启动需要在本地启动consul,consul下载64位版本,将consul执⾏⽂件拷⻉到/usr/local/bin⽬录下,通过命令consul agent -dev启动。
启动provider服务后,通过http://localhost:8500/访问当前启动的服务列表是否注册成功。
TSF作为微服务技术中台,在应用管理上,可以做到每个应用下边可以管理多个相同应用的不同版本,相关文档:https://cloud.tencent.com/document/product/649/16931
provider要启动需要在本地启动consul,consul下载64位版本,将consul执行文件拷贝到/usr/local/bin目录下,通过命令consul agent -dev启动。启动provider服务后,通过http://localhost:8500/访问当前启动的服务列表是否注册成功