vertx系列

vertx系列第一节
1:谈下博主如何解除到vertx,目前大多公司用到的都是spring体系,但是博主在工作中,,感觉spring体系特别笨重,无论是国内,出的spring alibaba等。不可否认,他们对java生态的分布式,做了很多。但是用起来还是特别重,性能比较低,有人说,用java就不要谈性能。java的性能不如go,很重要在于他的线程模型,后来,博主感觉,想自己去实现一套异步的分布式架构,核心是利用线程池,来实阻塞代码的异步处理,比如代码57行去查询数据库,那么原来的执行体系,该线程会阻塞,无法去做其他事情。如果把57行以后的代码封装成一个task放入线程池,,那么该线程就无需阻塞,可以一直取线程池的任务执行。在这个异步的道路中,我发现了mysql的异步驱动,,我在看源码的过程中,发现了vertx…从这一刻起,,博主深深的爱上了vertx,,无法自拔。
2:谈下,对vertx的理解,,他对标的是spring体系,他目前也有自己的生态,他号称是为分布式而生。他的高性能在于,他基于netty来做事件驱动,让线程无阻塞。其实线程在内存里面做运算,一个handler的处理,其实1毫秒都用不到的。当你的系统不再因为访问外部请求而阻塞的时候,1个线程可以处理大量的并发。他给的worker线程数的设定,最好是cpu核心数的2倍。这样,就几乎没什么线程上下问切换了。
2:说道vertx大家都很想知道,如何用他来实现高并发的系统。博主带来自己的思路。
2.1:博主使用的是vertx-hazelcast来做集群,每个服务是一个verticle。服务之间调用使用service-proxy,谈下博主为什么使用service-proxy,因为使用他,比较符合我们现在使用微服务的方式。A服务提供一个sdk,sdk包含传参,入参,接口的访问。其他service-proxy的底层是vertx提供的注解,生成了代理类,底层还是使用eventBus来进行服务通信,eventBus在vertx-hazelcast集群环境下,他能获取到每个服务的实例并且进行通信。当我们应用使用vertx-hazelcast的情况下,我们不在需要单独去做服务发现,缓存,分布式锁,分布式map,分布式计数等等操作。关于hazelcast这个可以大家去百度,他的性能目前比redis还要高一个量级。配置中心,可以使用consul.
博主目前的简单结构如下
web–调用–server----调用db层—每个应用启动都调用–config配置服务。这样的话,新增的服务,只需要关心业务,不需要去关心其他与自己无关的第三方应用。比如明显感觉数据库的服务并发支撑不够,,那就多起几个db服务。当然,数据库的处理能力,也要强才行,,个人比较建议使用mycat等类似的数据库代理中间件。这样开发比较简单。后面,博主会找时间去b站做视频,讲到博主目前使用vertx的方式,与过程中,遇到的问题。
3:博主后续想要解决的问题,把vertx应用部署到k8s中。这个目前只是有理论上的设想。按道理是可以的。

你可能感兴趣的:(分布式技术)