services

package module
v1.6.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 20, 2023 License: Apache-2.0 Imports: 72 Imported by: 0

README

Micro Services Go.Dev reference License

Real world Micro services

Overview

Micro services provide the fundamental building blocks for any products, apps or services. They can be used in isolation or combined to create powerful distributed systems. The services are intended to be consumed by each other using RPC and externally through the Micro API.

Rationale

Read more about the reason for Micro Services in this blog post.

Interfaces

Every service starts with a protobuf interface definition, which is a standard used by Google and everyone else now that gRPC is so dominant. The idea is to define the API in protobuf, code generate and implement the handlers for it. The services can be called by other services on the platform using those code generated clients or an API Gateway, which Micro provides. External calls via the API use the same format but with HTTP/JSON endpoints.

Services

Services available thus far:

  • address - Address lookup by postcode
  • analytics - Track and retrieve events
  • answer - Instant answers to any question
  • app - Serverless app deployment
  • avatar - Generate an avatar
  • bitcoin - Bitcoin price and transaction info
  • cache - Fast access key-value storage
  • carbon - Purchase carbon offsets
  • chat - Instant messaging service
  • comments - Add comments to any App
  • contact - Store your contacts
  • cron - Schedule cron jobs
  • crypto - Cryptocurrency prices, quotes, and news
  • currency - Exchange rates and currency conversion
  • db - Serverless postgres database
  • dns - DNS over HTTPS (DoH)
  • email - Send emails in a flash
  • emoji - All the emojis you need 🎉
  • ethereum - Ethereum API explorer
  • evchargers - Find electric vehicle (EV) chargers wherever you go
  • event - Event stream processing
  • file - Store, list, and retrieve text files
  • forex - Foreign exchange (FX) rates
  • function - Serverless lambda functions
  • geocoding - Address geocoding and reverse lookup
  • gifs - Quick and simple GIF search
  • google - Google search service
  • helloworld - Just saying hello world
  • holidays - Find the holidays observed in a particular country
  • id - Generate unique IDs (uuid, snowflake, etc)
  • image - Upload, resize, and convert images
  • ip - IP to geolocation lookup
  • joke - Funny Jokes
  • lists - Make a list
  • location - Real time GPS location tracking and search
  • memegen - Generate funny memes
  • minecraft - Minecraft server ping
  • movie - Search for movies
  • mq - PubSub messaging
  • news - Get the latest news
  • nft - Explore NFT Assets
  • notes - Store and retrieve notes
  • otp - One time password generation
  • password - Generate strong passwords
  • ping - Ping any IP
  • place - Search for places
  • postcode - Fast UK postcode lookup
  • prayer - Islamic prayer times
  • price - Global commodities index
  • qr - QR code generator
  • quran - The Holy Quran
  • routing - Etas, routes and turn by turn directions
  • rss - RSS feed crawler and reader
  • search - Indexing and full text search
  • sentiment - Real time sentiment analysis
  • sms - Send SMS messages
  • space - Infinite cloud storage
  • spam - Check if an email is spam
  • stock - Live stock quotes and prices
  • stream - Ephemeral message streams
  • sunnah - Traditions and practices of the Islamic prophet, Muhammad (pbuh)
  • thumbnail - Create website thumbnails
  • time - Time, date, and timezone info
  • translate - Language translation service
  • tunnel - Tunnel HTTP requests
  • twitter - Realtime twitter timeline & search
  • url - URL shortening, sharing, and tracking
  • user - Authenticate and manage users
  • vehicle - UK vehicle lookup
  • wallet - Virtual Wallet
  • weather - Real time weather forecast
  • wordle - Multiplayer wordle
  • youtube - Search for YouTube videos

Usage

Micro Services depend on Micro

Run Micro

Install and run the server first

micro server
Run a Service

Run a service from source

micro run github.com/micro/services/helloworld
Call a Service

To call a service from another

import "github.com/micro/services/helloworld/proto"

Call it through the API

curl "http://localhost:8080/helloworld/Call?name=Alice"

From the command line

micro helloworld call --name=Alice

Browse to

http://localhost:8082/helloworld/Call

Contribute

We welcome contributions of additional services:

  • Services must be built using the Micro platform
  • Any dependency must be configured using the Micro Config
  • All services must include a README.md and be well commented

Config

Config for each service should be stored under the service key by name

E.g db postgres host address db.address

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Client

type Client struct {
	Address    address.AddressService
	Ai         ai.AiService
	App        app.AppService
	Avatar     avatar.AvatarService
	Bitcoin    bitcoin.BitcoinService
	Cache      cache.CacheService
	Carbon     carbon.CarbonService
	Chat       chat.ChatService
	Comments   comments.CommentsService
	Contact    contact.ContactService
	Cron       cron.CronService
	Crypto     crypto.CryptoService
	Currency   currency.CurrencyService
	Db         db.DbService
	Dns        dns.DnsService
	Email      email.EmailService
	Ethereum   ethereum.EthereumService
	Evchargers evchargers.EvchargersService
	Event      event.EventService
	File       file.FileService
	Forex      forex.ForexService
	Function   function.FunctionService
	Geocoding  geocoding.GeocodingService
	Gifs       gifs.GifsService
	Github     github.GithubService
	Google     google.GoogleService
	Helloworld helloworld.HelloworldService
	Holidays   holidays.HolidaysService
	Id         id.IdService
	Image      image.ImageService
	Ip         ip.IpService
	Lists      lists.ListsService
	Location   location.LocationService
	Memegen    memegen.MemegenService
	Minecraft  minecraft.MinecraftService
	Movie      movie.MovieService
	Mq         mq.MqService
	News       news.NewsService
	Nft        nft.NftService
	Notes      notes.NotesService
	Otp        otp.OtpService
	Password   password.PasswordService
	Ping       ping.PingService
	Place      place.PlaceService
	Postcode   postcode.PostcodeService
	Prayer     prayer.PrayerService
	Price      price.PriceService
	Qr         qr.QrService
	Quran      quran.QuranService
	Routing    routing.RoutingService
	Rss        rss.RssService
	Search     search.SearchService
	Secret     secret.SecretService
	Sentiment  sentiment.SentimentService
	Sms        sms.SmsService
	Space      space.SpaceService
	Spam       spam.SpamService
	Stock      stock.StockService
	Stream     stream.StreamService
	Sunnah     sunnah.SunnahService
	Thumbnail  thumbnail.ThumbnailService
	Time       time.TimeService
	Translate  translate.TranslateService
	Tunnel     tunnel.TunnelService
	Twitter    twitter.TwitterService
	Url        url.UrlService
	User       user.UserService
	Vehicle    vehicle.VehicleService
	Wallet     wallet.WalletService
	Weather    weather.WeatherService
	Youtube    youtube.YoutubeService
}

func NewClient

func NewClient(c client.Client) *Client

Directories

Path Synopsis
ai
app
crashloop module
db
distributed module
api Module
dns
id
ip
mq
nft
otp
pkg
api
Package api is a helper for calling external third party apis
Package api is a helper for calling external third party apis
cache
Cache provides a simple marshaling layer on top of the store
Cache provides a simple marshaling layer on top of the store
git
model
package model helps with data modelling on top of the store
package model helps with data modelling on top of the store
tenant
Package tenant provides multi-tenancy helpers
Package tenant provides multi-tenancy helpers
pong module
qr
rss
sms
test
chat/client
Package main is a client for the chat service to demonstrate how it would work for a client.
Package main is a client for the chat service to demonstrate how it would work for a client.
kv
url
proxy Module
users
api Module
service Module

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL