1.服务启动流程图如下1.1启动传输服务,具体如下1.在SCBEngine引擎的run方法中,调用transportManager.init(this);完成传输Service的启动2.TransportManager通过SPI发现Transport接口实现类。VertxRestTransport就是其中之一,也是ServiceComb使用的传输服务。这是建立在Vertx框架之上的。3.Vertx做了什么?可以看到RestServerVerticle就是Vertx框架的业务实现。这里实现了类ServiceComb微服务的restservice服务。4.TransportManager通过服务发现找到VertxHttpDispatcher,也就是ServiceComb的路由分发器。准备好这些资源后,启动Vertx。详细信息:1.启动RestServerVerticle。如果ProducerProvider有端点,则继续启动rest服务。否则返回2。在启动rest服务之前,做一些路由Handler挂载,最重要的是VertxHttpDispatcher挂载。通过init挂载路由到VertxHttpDispatcher,后续请求通过路由到达VertxHttpDispatcher进行分发。3.一切就绪,启动httprest服务。1.2浅谈ServiceComb对象实例化的几种方式ServiceComb类对象实例化有三种方式:Spring容器bean、SPI加载、xml反序列化获取类对象并通过反射创建实例:Spring容器作为启动引擎,1.CseApplicationListener监听ContextRefreshedEvent事件(表示spring上下文刷新,bean就绪),开始初始化SCBEngine,启动微服务2.SCBEngine启动后,通过SPI实例化一些类,比如添加SPIServiceUtils.getOrLoadSortedService(ProducerProvider.class)给ProducerProvider.Handler配置定义在cse.handler.xml中,一般用spring加载单例,不用spring加载;因为SCB为每个微服务+invocationType对应一个handler实例,由AbstractHandlerManager的craete创建,通过JacksonXmlRootElement获取类对象解析xml配置
