微服务
什么是微信服务?
微服务这种架构风格就是把一组小服务演化成为一个单一的应用的一种方法。每个应用都运行在自己的进程中,并通过轻量级的机制保持通信,就像HTTP这样的API。这些服务要基于业务场景,并使用自动化布署工具进行独立的发布。可以有一个非常轻量级的集中式管理来协调这些服务,可以使用不同的语言来编写服务,也可以使用不同的数据存储。
1、微服务(Microservices Architecture)是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。
2、微服务是指开发一个单个小型的但有业务功能的服务,每个服务都有自己的处理和轻量通讯机制,可以部署在单个或多个服务器上。
3、微服务也指一种松耦合的、有一定的有界上下文的面向服务架构。也就是说,如果每个服务都要同时修改,那么它们就不是微服务,因为它们紧耦合在一起;如果你需要掌握一个服务太多的上下文场景使用条件,那么它就是一个有上下文边界的服务。
微服务的优点
1、每个服务独立存在,所以可以单独部署,不用每次发布某个功能都经历一次全服务发布。
2、遵循单一功能原则,服务之间可以通过RESTFUL或者RPC调用,功能解藕。
3、“细粒度” 的高可扩展性,每个服务都可以单独扩展,单独负载均衡。
4、去中心化,尽可能地实现 “自服务”。去中心化,尽
5、有利于简化单独的开发测试以及部署,对开发团队友好。
SpringCloud Alibaba
(一)SpringCloud Alibaba介绍
Spring Cloud Alibaba致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过Spring Cloud编程模型轻松使用这些组件来开发分布式应用服务。依托Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将Spring Cloud应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。
- 服务限流降级∶默认支持WebServlet、WebFlux,OpenFeign、RestTemplate、SpringCloudGateway,Zuul,Dubbo 和 RocketMQ 限流降级功能的接入,可以在运行时通过控制台实时修改限流降级规则,还支持查看限流降级 Metrics 监控。
- 服务注册与发现∶适配 Spring Cloud 服务注册与发现标准,默认集成了Ribbon 的支持。
- 分布式配置管理∶支持分布式系统中的外部化配置,配置更改时自动刷新。
- 消息驱动能力∶基于 Spring Cloud Stream 为微服务应用构建消息驱动能力。
- 分布式事务∶使用 @GlobalTransactional 注解,高效并且对业务零侵入地解决分布式事务问题。
- 阿里云对象存储∶阿里云提供的海量、安全、低成本、高可靠的云存储服务。支持在任何应用、任何时间、任何地点存储和访问任意类型的数据。
- 分布式任务调度∶提供秒级、精准、高可靠、高可用的定时(基于Cron表达式)任务调度服务。同时提供分布式的任务执行模型,如网格任务。网格任务支持海量子任务均匀分配到所有Worker(schedulerx-client)上执行。
- 阿里云短信服务∶ 覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建客户触达通道。
组件
- Sentinel∶把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
- Nacos∶一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
- RocketMQ∶一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务。
- Dubbo∶ Apache Dubbo”是一款高性能Java RPC框架。
- Seata∶阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。
- Alibaba Cloud ACM∶一款在分布式架构环境中对应用配置进行集中管理和推送的应用配置中心产品。
- Alibaba Cloud OSS∶阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。
- Alibaba Cloud SchedulerX∶阿里中间件团队开发的一款分布式任务调度产品,提供秒级、精准、高可靠、高可用的定时(基于Cron 表达式)任务调度服务。
- Alibaba Cloud SMS∶覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建客户触达通道。
(二)为什么选择SpringCloud alibaba
Spring Cloud Alibaba是国产的微服务开发一站式解决方案,与原有 Spring Cloud 兼容的同时对微服务生态进行扩展,通过添加少量的配置注解,便可实现更符合国情的微服务架构。
Spring Cloud Alibaba 对服务注册、配置中心与负载均衡功能都整合进 Nacos,有图形化界面,简化了微服务架构的复杂度,出问题的概率也会降低。原有的服务保护组件也调整为 Sentinel,相较Hystrix功能更强大,使用也更加友好。同时还支持了对Dubbo的调用,而且还有Seata用于支持分布式事务。
(三)阿里巴巴开源 Spring Cloud Alibaba微服务生态建设
Spring Cloud Alibaba项目由两部分组成:阿里巴巴开源组件和阿里云产品组件,旨在为Java开发人员在使用阿里巴巴产品的同时,通过利用 Spring 框架的设计模式和抽象能力,注入Spring Boot和Spring Cloud的优势。
(1)阿里巴巴开源组件
其中阿里巴巴开源组件的命名前缀为spring-cloud-alibaba,提供了如下特性:
服务发现
实现了 Spring Cloud common 中定义的 registry 相关规范接口,引入依赖并添加一些简单的配置即可将你的服务注册到Nacos Server中,并且支持与Ribbon的集成。
配置管理
实现了 PropertySoureLocator 接口,引入依赖并添加一些简单的配置即可从 Nacos Server 中获取应用配置并设置在 Spring 的 Environment 中,而且无需依赖其他组件即可支持配置的实时推送和推送状态查询。
高可用防护
默认集成了 Servlet、RestTemplate、Dubbo、RocketMQ 的限流(Flow Control)降级(Circuit Breaking and Concurrency),只需要引入依赖即可完成限流降级的集成动作,并支持在应用运行状态下通过 Sentinel 控制台来实时修改限流降级的策略和阈值。
(2)阿里云产品组件
阿里云的产品组件提供了如下特性:
应用发现服务
阿里云应用发现服务ANS,除了应用发现的基本功能外,提供了更低成本的 SaaS 化应用发现服务,同时在接口的调用中加入了加密逻辑,更好地保护你的服务。
配置管理服务
阿里云配置管理服务ACM,加强了安全的配置管理,并且还包含了完整的推送轨迹查询。
对象存储服务
阿里云云存储服务OSS,支持在任何应用、任何时间、任何地点存储和访问任意类型的数据, 只需要自动注入一个 OSS Client,即可直接使用存储与下载功能。
金中技术框架
金中公司开发的系统是由一个商业级项目升级优化而来的Spring Cloud Alibaba微服务架构,基于Java8 API技术重构了业务代码,采用Spring Boot 2 、Spring Cloud Greenwich 、Mybatis 等核心技术,同时提供基于Vue的前端框架用于快速搭建企业级的微服务系统平台。
系统采用前后端分离的模式,前端基于 Vue、 Element-UI,后端采用Spring Cloud Alibaba 全家桶,并同时对其基础组件做了高度的封装,单独开源出一个框架:Maven中央库引入即可,减少了工程的臃肿,也可更注重于业务开发 集成Sentinel从流量控制、熔断降级、系统负载等多个维度保护服务的稳定性。注册中心、配置中心选型Nacos,为工程瘦身的同时加强各模块之间的联动。
(一)主要特性
(二)技术优势
1、组件式架构
业务工程与核心工程分离,以jar的形式依赖。为业务定制各个starter,引入开箱即用,为整个架构解耦,提高效率。
2、前后端分离
采用前后端分离模式,前端提供ElementUI、UNI-APP基于Vue架构。分布式单体式后端架构提供两套后端架构,基于Spring Cloud的分布式架构以及基于Spring Boot的单体式架构。
3、完善的权限管理
系统提供菜单按钮权限、数据权限、接口权限三种配置。基于注解+Web的组合配置方式,灵活多变,即时生效。
4、主流数据库兼奢
一套代码完全兼容Mysql、OracIe、PostgreSQL三大主流数据库,为各种不同需求的项目提供强力支持。
5、Nacos动态网关鉴权、动态聚合文档
集成Nacos完成统一的服务注册与配置的轻量级、高拓展性动态网关鉴权,可在线配置,实时生效。实现Swagger Spring Cloud聚合文档。
6、Sentinel服务限流熔断
集成Sentinel从流量控制、熔断降级、系统负载等多个维度保护服务的稳定性。
(三)Web后端
- Java EE 8
- Servlet 3.0
- Apache Maven 3
- Spring Boot 2.3.x
- Spring Cloud Hoxton.SR9
- Spring Framework 5.2.x
- Spring Security 5.2.x
- Apache MyBatis 3.5.x
- Hibernate Validation 6.0.x
- Alibaba Druid 1.2.x
(四)web前端
(五)APP端
包括Android和IOS,APP前端框架使用 uni-app框架,开发者编写一套代码,可发布到 IOS、Android、Web(响应式)、以及各种小程序、快应用等多个平台,实现快速开发,快速部署发布。并且可对接具备相应平台SDK开发包的第三方硬件或应用系统。
(六)运行环境
- 操作系统:Centos >=8.0
- 数据库:MySQL>=8.7
- WEB服务器:Tomcat >=8.0
- 主机:云服务器、物理服务器
(七)Docker部署
应用系统各模块及相关依赖、中间件需打包成 docker 部署镜像,支持通过 docker 快速部署。
源码及二次开发
(一)购买源代码
有技术开发能力的企业、政府采购项目、自主运营的中大型企业可选择购买源代码。
- 1、节省人力及经济成本。这是最直接的体现,如果企业自建团队开发系统,动辄几十万,甚至上千百万,这成本不是一般小企业能够承受得了的,并且开发周期及质量也得不到保障,直接购买源码,以最低的成本投入即刻拥有我们多年精心研发得到的成果。
- 2、节省时间精力,获得市场先机。您的重心或许应该放在您当前专注的业务上,软件开发可直接付费找专业的人做专业的事情,这样你可以节省很多时间来做自己擅长的事情,这样产生的价值远远高于您投资小钱买源码的价钱,从而做到利益最大化。
- 3、安全、放心。系统安装到自己的服务器上,所有源码全部由自己掌握,绝对安全可靠。
- 4、自由二开,完美适配业务发展。因为每个企业的需求可能不一样,购买源码自己完全可以自由更改,自由二次开发,自由自主整合自己现有的产品,打造独一无二的竞争优势和商业模式。
- 5、技术能力快速提升。我们公司产品已经是采用了最先进最主流的技术路线,直接购买代码进行二开在享受新技术开发带来便利的同时,又能体验新技术的核心思想与最佳实践。例如现有使用的springcloudalibaba微服务技术、3D建模技术、数据大屏技术、物联网技术、呼叫呼叫技术、JS客户端技术等,直接使用我们的源码可快速提高公司与技术人员的技术水平和技术能力。
(二)可视化设计平台
零代码开发
无需写代码,只需在编辑器内将组件拖拽到画布中,再配置组件的样式、数据源和交互动作,以可视化的方式完成对功能的开发
低代码开发
基于代码生成器的低代码开发有着比可视化开发更高的灵活性,可以开发各种复杂的业务流程。
报表设计器
支持多源、横纵向分组交叉等常见功能的轻量级报表设计器,只要会excel,就能轻松构建业务应用和管理流程完成各种复杂报表的设计制作。
流程设计器
将工作流开发简化到极致,拖拽生成表单+可视化流程配置,两步完成一个工作流程。
BI大屏设计器
丰富的图形组件,可以通过图形化的界面快速搭建专业、美观、酷炫的大屏展示。
基础功能
系统自带的基础功能,如系统权限、组织架构、系统管理、数据字典等功能无需开发,直接使用。