死磕java微服务架构和实践

[微服务]3分钟决策是否要用微服务架构

2020-05-01  本文已影响0人  老猿享说

一.认识微服务架构

应用架构发展:单体应用  SOA(ESB) 微服务云原生

朴素理解转微服务架构就是系统服务化拆、再拆、再拆拆

微服务是一种架构风格不是技术标准。

微服务架构思想:

       系统拆得小服务化

       服务独立部署运行

       服务间http/https轻量级通信(restful)

       服务治理

       服务开发可不限技术栈

       服务可不同存储技术

可自研或Dubbo或spring cloud等

二.微服务解决什么问题

软件工程从来没有银弹。微服务架构也不是。

个人经验微服务架构解决下列问题之一:

业务复杂或将复杂难于扩展、维护

难于快速响应移动互联下多端产品需求差异多变化快

大流量高并发下很难保证高可用、稳定

三.微服务开发的工程性问题

技术选型 (spring cloud OR K8S OR K8S + istio)

业务如何拆分(没有标准)

建议子应用级别,不建议拆得太细,太细的话对服务治理挑战和代价更大。

技术规范制定 

Restful API规范等开发规范、测试规范、运维规范。

开发、测试模式转变

     前后端分离、小团队协同、DevOps开发模式

运维升级

    容器化部署、配套服务治理基础设施搭建,如网关流控、全链路调用监控、日志采集与监控等

小结:

微服务架构开发是大而复杂工程,所有服务组件和服务治理的基础设施都要完善,才能走稳走远。

四.微服务架构的技术选型

从业务实际出发。看眼前收益也看未来。

Spring cloud +docker  OR 云原生 K8S+istio:

组件Spring cloud云原生

自愈和自动伸缩无kube-controller-manager

调度和发布无kube-scheduler+Deployment

配置管理Spring Cloud ConfigConfigMap

服务发现与调用Eureka+Ribbon(Open Feign)Istio envoy

弹性和容错HystrixIstio envoy

网关ZuulIstio Gateway

服务安全Spring Cloud SecurityIstio Auth

调用链路监控Spring Cloud Sleuth+ZIPkinIstio envoy+Jaeger

Metrics监控actuator+Spring Boot AdminIstio+Prometheus

日志收集Spring Cloud Sleuth+ELKfuentd/Istio

比较:1)Spring cloud上手快、 K8S+istio复杂学习曲线高坑多点;

          2)服务实现和服务治理前者耦合,应用侵入式 后者完全解耦,开发只关注业务效率更高;

          3)前者只支持java,后者支持多语言;

个人经验建议:

团队人员具备K8S经验(或公司重视积极投入),优先云原生 K8S+istio。

       因为随着5G和AI成熟、大数据云计算、万物智联发展趋势需要可以更快速灵活支持新业务的拓展。

java栈开发且历史包袱重建议spring cloud开发逐步演进。


文/阿青,写代码写诗写职场的程序猿大叔,倾力原创简单实用的硬干货,转载此文请联系阿青。

上一篇下一篇

猜你喜欢

热点阅读