Cloud native multi-runtime microservice framework

Overview

Femas: Cloud native multi-runtime microservice framework

The repository address has been transferred to PolarisMesh

English | 简体中文

Introduction

Femas is an open source product form of Tencent Cloud's microservice platform TSF . It focuses on the running state of microservices and provides one-stop microservice management and control capabilities such as multi-frame unified service discovery, north-south and east-west traffic management, service observability, and configuration management. In the service architecture transformation, the core issues are difficult to reuse heterogeneous frameworks, difficult to manage and control surge traffic, and time-consuming for troubleshooting and recovery.

  • data plane: Femas uses the multi-runtime architecture design to standardize and modularize the underlying core capabilities of microservices, and assemble the basic components split in the microservice field through a reasonable architecture to meet diversified microservice scenarios. , lightweight, portable, low-cost, cloud-free vendor binding.
  • control plane: Femas provides a unified control plane standard protocol, a set of governance protocols, and multi-language and multi-data plane distribution.

ability

image

  • Registry manage: Femas implements the management of open source registries (currently supports Consul, nacos, eureka), including cluster management and service management. Users can configure the registry cluster on the Paas platform to view the cluster status and service list.
  • Service governance: Authentication, API management, Fuse downgrade, Access current limit, Service registration discovery, Service routing, Service event.
  • Service configuration: application configuration management, configuration hot update, Femas implements a set of standard configuration API interface, configuration is divided into governance rules,application configuration, open source side supports directly issuing governance rules through Paas platform , do not rely on other third-party components.
  • Service registration discovery: Femas implements a set of standard registration discovery API interfaces, and users can directly use the SDK provided by Femas to register and discover to mainstream open source registry centers.
  • Service monitoring:
    • Metrics: Femas implements a set of standard API interfaces for business metrics. Femas uses micrometer to implement business metrics statistics by default.

    • Tracing: Femas implements a set of standard tracing API interfaces. The SDK side is responsible for formulating OpenTracing log specifications and link collection. By default, Opentelemtry is used to collect Tracing

Feature

  • Provide SDKs for Java and Go to help users realize multi-language unified management on the same Paas platform.
  • Femas standardizes and encapsulates microservice capabilities and provides unified access to the Layer layer of irrelevant protocols, which facilitates the integration of a full set of capabilities into any protocol, and realizes the unified management of multi-protocol.
  • Femas abstracts the capabilities that a microservice application may need to use in the running process into standard API components, which are convenient for expansion and compatible with other open source component ecosystems.
  • Femas does not bind any other components, which is convenient for users at all levels to learn, use and secondary development.
  • Femas's low-level capabilities are plug-in, easy to expand, and users can flexibly combine and match the microservice capability matrix according to their needs.
  • Sink-type non-intrusive access, zero cost for user transformation.
  • Agent bytecode injection (TODO)
  • ServiceMesh service mesh
  • Femas hopes to summarize Tencent's microservice product center's understanding of microservices into a platform to help users quickly build an enterprise-level microservice ecosystem.
  • Femas supports Tencent's internal ecosystem of billions of users.

Quick start

Install the server

The operating environment depends on:

64 bit OS, support Linux/Unix/Mac/Windows, script start support Linux/Unix/Mac;

64 bit JDK 1.8+;

Maven 3.2.x+;

APM monitoring tool Skywalking

Metrics monitoring tools promethus, grafana

External database Mysql (optional)

Stand-alone deployment

Source code compilation method

mvn -Dmaven.test.skip=true clean install -U

cd femas-admin-starter/target/femas-admin-starter-$version/femas-admin/bin

Start with the embedded database: The embedded database only supports stand-alone deployment, and cluster deployment is not currently supported. The embedded database data disk path is ${user.home}/rocksdb/femas/data/

sh startup.sh

Start with an external database:

sh startup.sh external

Download compression method Press file

tar -zxvf femas-admin-starter-$version.tar.gz

cd femas-admin-starter-$version/femas-admin/bin

Startup script, embedded database

sh startup.sh

Configuration file:

The project configuration file is in the femas-admin/conf directory

cd femas-admin-starter-$version/femas-admin/conf

Configure skywalking backend address

femas:
  trace:
    backend:
      addr: http://IP:PORT
#Configure Metrics grafana address
  metrics:
    grafana:
      addr: http://IP:PORT

Cluster deployment

Cluster deployment is the same as single-machine deployment, the only difference is that the data source must be an external data source The start command is

sh startup.sh external

Configuration file configuration data source

spring:
  datasource:
    url: jdbc:mysql://IP:3306/adminDb?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useSSL=false&serverTimezone=Asia/Shanghai
    username: username
    password: password
    hikari:
      driver-class-name: com.mysql.cj.jdbc.Driver

Visit http://localhost:8080/index

Springcloud access

Sample
Add dependency
<!-- Native dependency of registry -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-discovery</artifactId>
    <version>2.1.2.RELEASE</version>
</dependency>
 
<!-- femas middleware dependency -->
<dependency>
    <groupId>com.tencent.tsf</groupId>
    <artifactId>femas-extension-springcloud-greenwich-starter</artifactId>
    <version>${femas.latest.version}</version>
</dependency>
Configuration file
server:
  port: 18001
spring:
  application:
    name:
      femas-springcloud-consumer
  cloud:
    consul:
      host: 127.0.0.1
      port: 8500
      discovery:
        serviceName: femas-springcloud-consumer
        instanceId: ${spring.application.name}-${server.port}-${spring.cloud.client.hostname}
        heartbeat:
          enabled: true
# nacos:
# discovery:
# server-addr: 127.0.0.1:8848
 
 
# Is to configure the paas backend if there is no configuration, then obtain the rules from the local configuration file
paas_server_address: http://127.0.0.1:8080
 
# Use the method provided by Femas to access the registration center
femas_registry_ip: 127.0.0.1
femas_registry_port: 8500
femas_registry_type: consul
Start service command
-javaagent:"{skywalking agent absolute path}/agent/skywalking-agent.jar"
-Dfemas_namespace_id=Namespace ID
-Dfemas_prog_version=Service version
-Dskywalking.agent.service_name=The name of the service registered on skywalking, which needs to be consistent with the name of the registration center
-Dskywalking.collector.backend_service=skywalking backend address, which can override the agent's conf configuration
  1. Reference agent probe of skywalking
  2. The service needs to specify its own namespace
  3. Specify the group to which the service belongs, and cooperate with the realization of service governance on the SDK side
  4. The service name registered to skywalking must be the same as the name registered to the registration center, otherwise the tracing link observation will not find the corresponding service.

Dubbo access

Sample

For details, see the official document below

Documentation

Official Document

FAQ

Contribution Manual

Code of Conduct

Participate in Contribution

  • Actively participate in the discussion of the Issue, such as answering questions, providing ideas, or reporting unsolvable errors (Issue)
  • Write and improve project documentation (Wiki)
  • Submit patch optimization code (Coding)

You will get

  • Join the list of contributors to Tencent open source projects and display them on Tencent open source official website
  • Write CONTRIBUTING.md for specific items
  • Tencent open source contributor certificate (electronic version & paper)
  • Become a special guest of offline technology conference/salon
  • Q coins and souvenirs

contact us

image

License

BSD v3.

You might also like...

Joyce is a highly scalable event-driven Cloud Native Data Hub.

Joyce Component docker latest version Build Import Gateway sourcesense/joyce-import-gateway Joyce Kafka Connect sourcesense/joyce-kafka-connect Mongod

Oct 6, 2022

Cloud Native and Low Code Platform to create FullStack web Admin applications in minutes

Cloud Native and Low Code Platform to create FullStack web Admin applications in minutes

Cloud Native and Low Code Platform to create FullStack web Admin applications in minutes ✨ Features & Technologies REST API generator Low Code CRUD &

Dec 26, 2022

PolarDB-X is a cloud native distributed SQL Database designed for high concurrency, massive storage, complex querying scenarios.

PolarDB-X is a cloud native distributed SQL Database designed for high concurrency, massive storage, complex querying scenarios.

中文文档 What is PolarDB-X ? PolarDB-X is a cloud native distributed SQL Database designed for high concurrency, massive storage and complex querying scen

Dec 31, 2022

A cloud-native, serverless, scalable, cheap key-value store

Sleeper Introduction Sleeper is a serverless, cloud-native, log-structured merge tree based, scalable key-value store. It is designed to allow the ing

Dec 26, 2022

A fast, light and cloud native OAuth 2.0 authorization microservices based on light-4j

A fast, light weight and cloud native OAuth 2.0 Server based on microservices architecture built on top of light-4j and light-rest-4j frameworks. Stac

Dec 17, 2022

Sceneform React Native AR Component using ARCore and Google Filament as 3D engine. This the Sceneform Maintained Component for React Native

Sceneform React Native AR Component using ARCore and Google Filament as 3D engine. This the Sceneform Maintained Component for React Native

Discord Server Join us on Discord if you need a hand or just want to talk about Sceneform and AR. Features Remote and local assets Augmented Faces Clo

Dec 17, 2022

React native wrapper for Jitsi Meet SDK Library that rely on the native view (Activity / ViewController)

react-native-jitsi-meet-sdk React native wrapper for Jitsi Meet SDK Library. This Library implements the Jitsi SDK with a native activity on the Andro

May 2, 2022

With react-native-update-in-app library you can easily implement in-app updates in your React Native app using CDN or any other file server

React Native In-App update With react-native-update-in-app library you can easily implement in-app updates in your React Native app using CDN or any o

Dec 21, 2022

An awesome native wheel picker component for React Native.

An awesome native wheel picker component for React Native.

⛏️ react-native-picky An awesome native wheel picker component for react-native. Features Supports multiple columns ✅ Supports looping ✅ Native Androi

Dec 4, 2022
Owner
Tencent
Tencent
The Distributed Application Runtime (Dapr) provides APIs that simplify microservice connectivity

Quarkus - Dapr Introduction What is Quarkus? Traditional Java stacks were engineered for monolithic applications with long startup times and large mem

Quarkiverse Hub 18 Jan 5, 2023
Spring boot microservice example with Eureka Server + Eureka Client + Spring Cloud API Gateway + OAuth2.0 + Circuit Breaker + Resilience4J + FeignClient + RestTemplate

Spring boot microservice example Spring boot microservice example with Eureka Server + Eureka Client + Spring Cloud API Gateway + OAuth2.0 + Circuit B

Subhash Lamba 47 Dec 29, 2022
Microservice Architecture with Spring Boot, Spring Cloud and Docker

Piggy Metrics Piggy Metrics is a simple financial advisor app built to demonstrate the Microservice Architecture Pattern using Spring Boot, Spring Clo

Alexander Lukyanchikov 12.1k Jan 1, 2023
Piranha - a modern cloud runtime

Piranha Project The Piranha Project delivers you with Cloud ready containers and useful add-on / integration modules. Getting Started To get started w

Piranha Cloud 161 Dec 24, 2022
DCL-350: Implementing MicroService Architecture using Spring Cloud

DCL-350: Implementing MicroService Architecture using Spring Cloud

Binnur KURT 3 Sep 20, 2022
循序渐进,学习Spring Boot、Spring Boot & Shiro、Spring Batch、Spring Cloud、Spring Cloud Alibaba、Spring Security & Spring Security OAuth2,博客Spring系列源码:https://mrbird.cc

Spring 系列教程 该仓库为个人博客https://mrbird.cc中Spring系列源码,包含Spring Boot、Spring Boot & Shiro、Spring Cloud,Spring Boot & Spring Security & Spring Security OAuth2

mrbird 24.8k Jan 6, 2023
一个涵盖六个专栏:Spring Boot 2.X、Spring Cloud、Spring Cloud Alibaba、Dubbo、分布式消息队列、分布式事务的仓库。希望胖友小手一抖,右上角来个 Star,感恩 1024

友情提示:因为提供了 50000+ 行示例代码,所以艿艿默认注释了所有 Maven Module。 胖友可以根据自己的需要,修改 pom.xml 即可。 一个涵盖六个主流技术栈的正经仓库: 《Spring Boot 专栏》 《Spring Cloud Alibaba 专栏》 《Spring Clou

芋道源码 15.7k Dec 31, 2022
一套涵盖大部分核心组件使用的Spring Cloud教程,包括Spring Cloud Alibaba及分布式事务Seata,基于Spring Cloud Greenwich及SpringBoot 2.1.7。22篇文章,篇篇精华,32个Demo,涵盖大部分应用场景。

springcloud-learning 简介 一套涵盖大部分核心组件使用的Spring Cloud教程,包括Spring Cloud Alibaba及分布式事务Seata,基于Spring Cloud Greenwich及SpringBoot 2.1.7。22篇文章,篇篇精华,32个Demo,涵盖

macro 5.6k Dec 30, 2022
A spring cloud infrastructure provides various of commonly used cloud components and auto-configurations for high project consistency

A spring cloud infrastructure provides various of commonly used cloud components and auto-configurations for high project consistency.

Project-Hephaestus 2 Feb 8, 2022
A high availability shopping(ecommerce) system using SpringBoot, Spring Cloud, Eureka Server, Spring Cloud Gateway, resillience4j, Kafka, Redis and MySQL.

High-availability-shopping-system A high availability shopping(ecommerce) system using SpringBoot, Spring Cloud, Eureka Server, Spring Cloud Gateway,

LeiH 1 Oct 26, 2022