内容来源:2016年12月16日,平安壹钱包高级架构师丁雪丰在“GIAC 全球互联网架构大会”进行《Java 生态圈与微服务》演讲分享。IT大咖说做为独家视频合做方,经主办方和讲者审阅受权发布。
阅读字数:1532 | 4分钟阅读
嘉宾演讲视频地址:t.cn/R9HAuY1编程
Java诞生于1995年,1996年发布了1.0版本;2004年,发布量大更新1.5,并改成5.0;2014年,发布了Java8;2017年,发布Java9(根据OpenJDK官网,9月发布正式版)。安全
在TIOBE编程语言排行榜中,Java长期位居榜首,是2015年的年度编程语言。经过Google Trends,能够看到Java的搜索量远高于紧随其后的几门语言。架构
学习语言时,你们都会从HelloWorld写起,在Spring Boot的帮助下,Java也能经过几行代码写出一个HelloWorld的REST服务,比起目前流行的Go语言绝不逊色。
框架
在平时的工做中,你们写的并不是HelloWorld,大多数人都是在写业务逻辑,因此你们更关心语言自己的优点,以及它的工具链和生态环境。运维
所谓微服务,就是一些协同工做的小而自治的服务,这里须要解释两点,首先是“一些”,微服务并不是一个服务,而是几个相关服务的集合;其次是“小而自治”,服务要小,咱们不鼓励大而全的服务。编程语言
微服务与语言二者间并无什么必然的关系。微服务的好处就是能够带来微服务的异构性,用全部语言均可以写出合格的微服务。没有最好的语言,只有最合适的使用场景。微服务
在我看来,微服务最应该关注的不是开发,也不是运维,而是如何设计微服务,业务上的设计远比代码上的实现来得重要。此时领域驱动设计就显得如此重要,先从领域模型入手,设计合理的服务,而后再来谈微服务落地。工具
微服务的落地须要考虑不少问题,好比服务的实现、如何开发、如何测试、服务的运维、可运维和高可用。性能
进入微服务的落地环节以后,就要和语言有关了。比方说微服务该如何测试?微服务的服务提供方须要优雅地调用本身,而服务消费方要模拟提供方的反应。学习
如图是一个服务提供方的简单测试。
上图是消费者一端的测试。
在Java中可选择的代码质量工具仍是有不少的,好比测试覆盖率工具、Mock工具、性能测试工具、持续集成工具以及代码扫描工具。这就是生态圈的强大。
另外一方面,微服务也须要受到保护,好比服务的认证与受权。在一些场景下,开发和测试环境是相通的,测试环境的请求可能会跑到开发生产环境中去;甚至有些状况下整个集团的网都是通的。这时就须要作服务的认证与受权。
OAuth2.0能够用来提供各类服务受权,不只对外也能对内。它的受权模式有受权码模式、简化模式、密码模式和客户端模式,在内部服务中通常会用客户端模式。
一样,Java的生态圈中还有不少安全相关的工具,好比安全框架、签名&摘要工具和加解密工具等等。
当服务的数量到达必定成都后,就须要考虑服务的发现与注册,Spring Cloud默认提供了Eureka做为注册中心,但同时也可使用Consul,虽然Consul不是Java写的,但配合Spring Cloud Consul也很好用。相似的还有国内很是知名的Dubbo。
在Spring Boot和Spring Cloud的帮助下,咱们能够很方便地了解到服务的运行状况,好比经过Hystrix实现服务降级:
经过Zipkin实现链路分析,配合标准化的日志,结合ELK等工具,能对信息作进一步的统一处理。
虽然Spring很强大,Spring Boot和Spring Cloud也红的发紫,加之Java庞大的生态圈,但也不要期望开源软件拿来就能用,在实际平常工做中,整合的工做是必定会有的,并且总会出现定制的须要。
对于微服务而言,设计合理的业务模型很重要。
微服务与语言并无太大的关系。
完整的生态环境能帮助你快速地将微服务落地。
我今天的分享就到这里,谢谢你们!