书生文档服务器是一个文档集中存放,受限访问的平台。系统采用了书生 SEPReader 作为文档阅读的终端,采用 SEPWriter 作为文档转换的工具。 SEP Writer 将不同格式不同应用程序生成的文档转换成统一的 SEP 格式,再通过客户端将转换后的文件提交给给安全文档管理服务器( SDP Server ),保存到专门的安全文档数据库中。服务器统一控制每个文档针对每个操作人员的浏览、复制、打印、传播、摘录等权限,最大限度的保证电子文档安全,而且又不妨碍合法和正常的阅读以及操作。
书生文档服务器集成了多种主流的用户身份机制,包括 Windows 域和活动目录, Lotus 用户集成, LDAP 用户集成以及提供集成其他基于数据库的应用系统用户机制。可以和各种类型的应用系统无缝集成。系统提供 14 种不同粒度的访问权限,可以充分满足复杂的管理需要。
传统的文档管理系统不同的是,书生文档服务器真正防止了非受限的传播重要文档,比如传统的档案系统,虽然有多级的用户权限管理机制,但文档一旦被某个用户访问,用户就可以不受限的将该文档通过拷贝,邮寄等方式传播给他人。而此系统采用的文档的终生机制,文档无论何时被访问,除非管理员特别指定,文档都受管理系统的控制。可以称作是全程安全的文档管理系统。
文档服务器可以与书生 Office 配合进行使用,会具有最佳的使用效果。用户在用 Office 编辑定稿后轻松一键即可提交给文档服务器,便捷方便的操作最大程度地降低了使用者的负担,使文档集中共享的制度能得到最有效的贯彻执行。
在了解 Spring Cloud 之前先了解一下微服务架构需要考量的核心关键点,如下图:
对于以上等核心关键点的处理,不需要我们重复造车轮, Spring Cloud 已经帮我们集成了,它使用 Spring Boot 风格将一些比较成熟的微服务框架组合起来,屏蔽掉了复杂的配置和实现原理,为快速构建微服务架构的应用提供了一套基础设施工具和开发支持。
Spring Cloud 所提供的核心功能包含:
Spring Cloud架构图
Spring Cloud子项目
Spring Cloud 旗下的子项目大致可以分为两类:
如下:
1. Spring Cloud 与 Spring Boot
Spring Boot 可以说是微服务架构的核心技术之一。通过在 Spring Boot 应用中添加 Spring MVC 依赖,就可以快速实现基于 REST 架构的服务接口,并且可以提供对 HTTP 标准动作的支持。而且 Spring Boot 默认提供 JackJson 序列化支持,可以让服务接口输入、输出支持 JSON 等。因此,当使用 Spring Cloud 进行微服务架构开发时,使用 Spring Boot 是一条必经之路。
2. Spring Cloud 与服务治理( Eureka )
服务治理是 Spring Cloud 的核心,在实现上其提供了两个选择,即 Consul 和 Netflix 的 Eureka 。
Eureka 提供了服务注册中心、服务发现客户端,以及注册服务的 UI 界面应用。
在 Eureka 的实现中,节点之间相互平等,有部分注册中心“挂掉”也不会对整个应用造成影响,即使集群只剩一个节点存活,也可以正常地治理服务。即使所有服务注册节点都宕机, Eureka 客户端中所缓存的服务实例列表信息,也可让服务消费者能够正常工作,从而保障微服务之间互相调用的健壮性和应用的弹性。
3. Spring Cloud 与客户端负载均衡( Ribbon )
Ribbon 默认与 Eureak 进行无缝整合,当客户端启动的时候,从 Eureka 服务器中获取一份服务注册列表并维护在本地,当服务消费者需要调用服务时, Ribbon 就会根据负载均衡策略选择一个合适的服务提供者实例并进行访问。
Spring Cloud 通过集成 Netflix 的 Feign 项目,为开发者提供了声明式服务调用,从而简化了微服务之间的调用处理方式。并且默认 Feign 项目集成了 Ribbon ,使得声明式调用也支持客户端负载均衡功能。
4. Spring Cloud 与微服务容错、降级( Hystrix )
为了给微服务架构提供更大的弹性,在 Spring Cloud 中,通过集成 Netflix 下子项目 Hystrix ,通过所提供的 @HystrixCommand 注解可以轻松为我们所开发的微服务提供容错、回退、降级等功能。此外, Hystrix 也默认集成到 Feign 子项目中。
Hystrix 是根据“断路器”模式而创建。当 Hystrix 监控到某服务单元发生故障之后,就会进入服务熔断处理,并向调用方返回一个符合预期的服务降级处理( fallback ),而不是长时间的等待或者抛出调用异常,从而保障服务调用方的线程不会被长时间、不必要地占用,避免故障在应用中的蔓延造成的雪崩效应。
而 Hystrix 的仪表盘项目( Dashboard )可以监控各个服务调用所消耗的时间、请求数、成功率等,通过这种近乎实时的监控和告警,可以及时发现系统中潜在问题并进行处理。
5. Spring Cloud 与服务网关( Zuul )
Spring Cloud 通过集成 Netflix 中的 Zuul 实现 API 服务网关功能,提供对请求的路由和过滤两个功能
路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础。
过滤器功能则负责对请求的处理过程进行干预,是实现请求校验、服务聚合等功能的基础。
通过 Zuul ,可以将细粒度的服务组合起来提供一个粗粒度的服务,所有请求都导入一个统一的入口,对外整个服务只需要暴露一个 API 接口,屏蔽了服务端的实现细节。通过 Zuul 的反向代理功能,可以实现路由寻址,将请求转发到后端的粗粒度服务上,并做一些通用的逻辑处理。此外, Zuul 默认会与 Eureka 服务器进行整合,自动从 Eureka 服务器中获取所有注册的服务并进行路由映射,实现 API 服务网关自动配置。
6. Spring Cloud 与消息中间件( Stream )
Spring Cloud 为简化基于消息的开发,提供了 Stream 子项目,通过建立消息应用抽象层,构建了消息收发、分组消费和消息分片等功能处理,将业务应用中的消息收发与具体消息中间件进行解耦,使微服务应用开发中可以非常方便地与 Kafka 和 RabbitMQ 等消息中间件进行集成。
Spring Cloud Bus 基于 Stream 进行扩展,可以作为微服务之间的事件、消息总线,用于服务集群中状态变化的传播。
比如 Spring Cloud Config 借助 Bus ,可以实现配置的动态刷新处理。
7. Spring Cloud 与分布式配置中心( Config )
针对微服务架构下的配置文件管理需求, Spring Cloud 提供了一个 Config 子项目。 Spring Cloud Config 具有中心化、版本控制、支持动态更新和语言独立等特性。
在 Config 子项目中将微服务应用分为两种角色:配置服务器( Config Server )和配置客户端( Config Client )。使用配置服务器集中地管理所有配置属性文件,配置服务中心可以将配置属性文件存储到 Git 、 SVN 等具有版本管理仓库中,也可以存放在文件系统中。默认采用 Git 的方式进行存储,因此可以很容易地对配置文件进行修改,并实现版本控制。
8. Spring Cloud 与微服务链路追踪( Sleuth )
Spring Cloud 中的 Sleuth 子项目为开发者提供了微服务之间调用的链路追踪。
Sleuth 核心思想就是通过一个全局的 ID 将分布在各微服务服务节点上的请求处理串联起来,还原了调用关系,并借助数据埋点,实现对微服务调用链路上的性能数据的采集。
因此,通过 Sleuth 可以很清楚地了解到一个用户请求经过了哪些服务、每个服务处理花费了多长时间,从而可以对用户的请求进行分析。此外,通过将采集的数据发送给 Zipkin 进行存储、统计和分析,从而可以实现可视化的分析和展示,帮助开发者对微服务实施优化处理。
9. Spring Cloud 与微服务安全( Security )
Spring Cloud Security 为我们提供了一个认证和鉴权的安全框架,实现了资源授权、令牌管理等功能,同时结合 Zuul 可以将认证信息在微服务调用过程中直接传递,简化了我们进行安全管控的开发。
Spring Cloud Security 默认支持 OAuth 2.0 认证协议,因此单点登录也可以非常容易实现,并且 OAuth2.0 所生成的令牌可以使用 JWT 的方式,进一步简化了微服务中的安全管理。
10. Spring Cloud 的其他子项目
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)